diff options
| author | Jemma Issroff <jemmaissroff@gmail.com> | 2023-12-14 16:44:38 -0500 |
|---|---|---|
| committer | Jemma Issroff <jemmaissroff@gmail.com> | 2023-12-14 17:11:54 -0500 |
| commit | 5587bd4b37cc01227ce5546b3350033bb1ef9775 (patch) | |
| tree | ecc7135e9e9cc4e2d47f2c83ceba887fa2261570 /test/ruby | |
| parent | 39c072d6f7846a99f64e52090a320576715325c5 (diff) | |
[PRISM] Implement safe navigation in CallNodes
This commit implements safe navigation for CallNodes,
CallAndWriteNodes and CallOperatorWriteNodes
Diffstat (limited to 'test/ruby')
| -rw-r--r-- | test/ruby/test_compile_prism.rb | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/test/ruby/test_compile_prism.rb b/test/ruby/test_compile_prism.rb index 6b16205869..fc563951f6 100644 --- a/test/ruby/test_compile_prism.rb +++ b/test/ruby/test_compile_prism.rb @@ -1470,6 +1470,16 @@ module Prism pm = PrivateMethod.new pm.send(:instance_var) CODE + + # Testing safe navigation operator + assert_prism_eval(<<-CODE) + def self.test_prism_call_node + if [][0]&.first + 1 + end + end + test_prism_call_node + CODE end def test_CallAndWriteNode @@ -1507,6 +1517,24 @@ module Prism self.test_call_and_write_node &&= 1 CODE ) + + assert_prism_eval(<<-CODE) + def self.test_prism_call_node; end + def self.test_prism_call_node=(val) + val + end + self&.test_prism_call_node &&= 1 + CODE + + assert_prism_eval(<<-CODE) + def self.test_prism_call_node + 2 + end + def self.test_prism_call_node=(val) + val + end + self&.test_prism_call_node &&= 1 + CODE end def test_CallOrWriteNode @@ -1544,6 +1572,24 @@ module Prism self.test_call_or_write_node ||= 1 CODE ) + + assert_prism_eval(<<-CODE) + def self.test_prism_call_node + 2 + end + def self.test_prism_call_node=(val) + val + end + self&.test_prism_call_node ||= 1 + CODE + + assert_prism_eval(<<-CODE) + def self.test_prism_call_node; end + def self.test_prism_call_node=(val) + val + end + self&.test_prism_call_node ||= 1 + CODE end def test_CallOperatorWriteNode |
