summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreileencodes <eileencodes@gmail.com>2023-12-04 15:22:10 -0500
committerJemma Issroff <jemmaissroff@gmail.com>2023-12-04 16:45:18 -0500
commit09e8d37f5b60f1cd1076c354128309cdf74d0df7 (patch)
treefc921454ce9616684968bc7fefb51375e3809285
parent33bc22efe5d372898f3a37004f324f7457e9a944 (diff)
[PRISM] Implement `PM_INTERPOLATED_REGULAR_EXPRESSION_NODE`
Implements `PM_INTERPOLATED_REGULAR_EXPRESSION_NODE` for `defined?` Code: ```ruby defined?(/#{1}/) ``` ``` "********* Ruby *************" == disasm: #<ISeq:<compiled>@<compiled>:0 (0,0)-(0,16)> 0000 putobject "expression" 0002 leave "********* PRISM *************" == disasm: #<ISeq:<compiled>@<compiled>:0 (0,0)-(0,16)> 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 ad038a2ed6..7c9f368ef5 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_REGULAR_EXPRESSION_NODE:
case PM_INTERPOLATED_STRING_NODE:
case PM_LAMBDA_NODE:
case PM_OR_NODE:
diff --git a/test/ruby/test_compile_prism.rb b/test/ruby/test_compile_prism.rb
index e77051e383..3ca1dd3431 100644
--- a/test/ruby/test_compile_prism.rb
+++ b/test/ruby/test_compile_prism.rb
@@ -105,6 +105,7 @@ module Prism
assert_prism_eval('defined?("#{expr}")')
assert_prism_eval("defined? :sym")
assert_prism_eval("defined? /foo/")
+ assert_prism_eval('defined?(/#{1}/)')
assert_prism_eval("defined? -> { 1 + 1 }")
assert_prism_eval("defined? a && b")
assert_prism_eval("defined? a || b")