summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreileencodes <eileencodes@gmail.com>2023-12-05 14:08:21 -0500
committerJemma Issroff <jemmaissroff@gmail.com>2023-12-06 09:46:19 -0500
commitda1519b223e1accfcef1c831f9fdc6421724ea7c (patch)
tree62e04ad6273f1426e4f820f65d7bc232e3c633a8
parent45471084484d18a7496d2318729f6206294fa2fa (diff)
[PRISM] Implement `PM_MATCH_PREDICATE_NODE` for `defined?`
Ruby code: ```ruby defined? 1 in 1 ``` Instructions: ``` "********* 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 6024f69058..f6d31e3cdc 100644
--- a/prism_compile.c
+++ b/prism_compile.c
@@ -1491,6 +1491,7 @@ pm_compile_defined_expr0(rb_iseq_t *iseq, const pm_node_t *node, LINK_ANCHOR *co
case PM_INTERPOLATED_STRING_NODE:
case PM_KEYWORD_HASH_NODE:
case PM_LAMBDA_NODE:
+ case PM_MATCH_PREDICATE_NODE:
case PM_OR_NODE:
case PM_RANGE_NODE:
case PM_REGULAR_EXPRESSION_NODE:
diff --git a/test/ruby/test_compile_prism.rb b/test/ruby/test_compile_prism.rb
index f58b530368..8c74003f5e 100644
--- a/test/ruby/test_compile_prism.rb
+++ b/test/ruby/test_compile_prism.rb
@@ -128,6 +128,7 @@ module Prism
assert_prism_eval("defined? [*b]")
assert_prism_eval("defined? [[*1..2], 3, *4..5]")
assert_prism_eval("defined? [a: [:b, :c]]")
+ assert_prism_eval("defined? 1 in 1")
assert_prism_eval("defined? @a")
assert_prism_eval("defined? $a")