summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreileencodes <eileencodes@gmail.com>2023-12-04 15:10:12 -0500
committerJemma Issroff <jemmaissroff@gmail.com>2023-12-04 16:45:18 -0500
commit33bc22efe5d372898f3a37004f324f7457e9a944 (patch)
treed3d1b1cef47865fb9a6c55420e74b902183ec2d1
parentc23b2e5353f08a7131c77567f89d3aae707bdd25 (diff)
[PRISM] Implement `PM_INTERPOLATED_STRING_NODE`
Implements `PM_INTERPOLATED_STRING_NODE` for `defined?` Code: ```ruby defined?("#{expr}") ``` ``` "********* Ruby *************" == disasm: #<ISeq:<compiled>@<compiled>:0 (0,0)-(0,19)> 0000 putobject "expression" 0002 leave "********* PRISM *************" == disasm: #<ISeq:<compiled>@<compiled>:0 (0,0)-(0,19)> 0000 putobject "expression" 0002 leave ```
-rw-r--r--prism_compile.c1
-rw-r--r--test/ruby/test_compile_prism.rb1
2 files changed, 2 insertions, 0 deletions
diff --git a/prism_compile.c b/prism_compile.c
index 3c081cbafa..ad038a2ed6 100644
--- a/prism_compile.c
+++ b/prism_compile.c
@@ -1478,6 +1478,7 @@ pm_compile_defined_expr0(rb_iseq_t *iseq, const pm_node_t *node, LINK_ANCHOR *co
case PM_FLOAT_NODE:
case PM_HASH_NODE:
case PM_INTEGER_NODE:
+ case PM_INTERPOLATED_STRING_NODE:
case PM_LAMBDA_NODE:
case PM_OR_NODE:
case PM_RANGE_NODE:
diff --git a/test/ruby/test_compile_prism.rb b/test/ruby/test_compile_prism.rb
index b6b1274ea8..e77051e383 100644
--- a/test/ruby/test_compile_prism.rb
+++ b/test/ruby/test_compile_prism.rb
@@ -102,6 +102,7 @@ module Prism
assert_prism_eval("defined? [1, 2, 3]")
assert_prism_eval("defined?({ a: 1 })")
assert_prism_eval("defined? 'str'")
+ assert_prism_eval('defined?("#{expr}")')
assert_prism_eval("defined? :sym")
assert_prism_eval("defined? /foo/")
assert_prism_eval("defined? -> { 1 + 1 }")