aboutsummaryrefslogtreecommitdiffstats
path: root/test/ruby
diff options
context:
space:
mode:
authoreileencodes <eileencodes@gmail.com>2023-12-05 13:47:46 -0500
committerJemma Issroff <jemmaissroff@gmail.com>2023-12-06 09:46:19 -0500
commit86497645229099f3a6d0f64b3bb85d215f04f5df (patch)
tree41aef919ae1f1d3df6fb4140e59b80aec78453cc /test/ruby
parent02961fdbab0da97b2aa506b3e77d846d7e883ddc (diff)
downloadruby-86497645229099f3a6d0f64b3bb85d215f04f5df.tar.gz
[PRISM] Implement `PM_SPLAT_NODE` for `defined?`
In an array for `defined?` we need to check if there is a `contains_splat` flag, if so bail early. Ruby code: ```ruby defined?([[*1..2], 3, *4..5]) ``` Instructions: ``` "********* Ruby *************" == disasm: #<ISeq:<compiled>@<compiled>:0 (0,0)-(0,29)> 0000 putobject "expression" 0002 leave "********* PRISM *************" == disasm: #<ISeq:<compiled>@<compiled>:0 (0,0)-(0,29)> 0000 putobject "expression" 0002 leave ```
Diffstat (limited to 'test/ruby')
-rw-r--r--test/ruby/test_compile_prism.rb3
1 files changed, 3 insertions, 0 deletions
diff --git a/test/ruby/test_compile_prism.rb b/test/ruby/test_compile_prism.rb
index 89d3142b8f..d403901f1a 100644
--- a/test/ruby/test_compile_prism.rb
+++ b/test/ruby/test_compile_prism.rb
@@ -125,6 +125,9 @@ module Prism
assert_prism_eval("defined? %s[1,2,3]")
assert_prism_eval("defined? %x[1,2,3]")
+ assert_prism_eval("defined? [*b]")
+ assert_prism_eval("defined? [[*1..2], 3, *4..5]")
+
assert_prism_eval("defined? @a")
assert_prism_eval("defined? $a")
assert_prism_eval("defined? @@a")