diff options
author | eileencodes <eileencodes@gmail.com> | 2023-12-05 13:47:46 -0500 |
---|---|---|
committer | Jemma Issroff <jemmaissroff@gmail.com> | 2023-12-06 09:46:19 -0500 |
commit | 86497645229099f3a6d0f64b3bb85d215f04f5df (patch) | |
tree | 41aef919ae1f1d3df6fb4140e59b80aec78453cc /test/ruby | |
parent | 02961fdbab0da97b2aa506b3e77d846d7e883ddc (diff) | |
download | ruby-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.rb | 3 |
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") |