From 09e8d37f5b60f1cd1076c354128309cdf74d0df7 Mon Sep 17 00:00:00 2001 From: eileencodes Date: Mon, 4 Dec 2023 15:22:10 -0500 Subject: [PRISM] Implement `PM_INTERPOLATED_REGULAR_EXPRESSION_NODE` Implements `PM_INTERPOLATED_REGULAR_EXPRESSION_NODE` for `defined?` Code: ```ruby defined?(/#{1}/) ``` ``` "********* Ruby *************" == disasm: #@:0 (0,0)-(0,16)> 0000 putobject "expression" 0002 leave "********* PRISM *************" == disasm: #@:0 (0,0)-(0,16)> 0000 putobject "expression" 0002 leave ``` --- prism_compile.c | 1 + test/ruby/test_compile_prism.rb | 1 + 2 files changed, 2 insertions(+) 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") -- cgit v1.2.3