summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJemma Issroff <jemmaissroff@gmail.com>2023-11-02 14:36:45 -0300
committerJemma Issroff <jemmaissroff@gmail.com>2023-11-02 17:46:43 -0300
commitca24136da61c9bca9a8260cb0ac2ff206f6f3843 (patch)
tree8496ba7f8bb747313a2c184c518ea9fc1ececc27
parent698654ca8456a7e08033cb4eab2d6e9cef7b1413 (diff)
[PRISM] Fix popped on DefinedNode
-rw-r--r--prism_compile.c4
-rw-r--r--test/ruby/test_compile_prism.rb2
2 files changed, 3 insertions, 3 deletions
diff --git a/prism_compile.c b/prism_compile.c
index 59152d351e..6b8bf06bfe 100644
--- a/prism_compile.c
+++ b/prism_compile.c
@@ -1262,7 +1262,9 @@ pm_compile_defined_expr(rb_iseq_t *iseq, const pm_node_t *node, LINK_ANCHOR *con
lfinish[0] = NEW_LABEL(lineno);
lfinish[1] = 0;
- pm_compile_defined_expr0(iseq, node, ret, src, popped, scope_node, dummy_line_node, lineno, in_condition, lfinish);
+ if (!popped) {
+ pm_compile_defined_expr0(iseq, node, ret, src, popped, scope_node, dummy_line_node, lineno, in_condition, lfinish);
+ }
if (lfinish[1]) {
ELEM_INSERT_NEXT(last, &new_insn_body(iseq, &dummy_line_node, BIN(putnil), 0)->link);
diff --git a/test/ruby/test_compile_prism.rb b/test/ruby/test_compile_prism.rb
index fbc637a390..f30c3b621b 100644
--- a/test/ruby/test_compile_prism.rb
+++ b/test/ruby/test_compile_prism.rb
@@ -89,7 +89,6 @@ module Prism
end
def test_DefinedNode
-=begin
assert_prism_eval("defined? nil")
assert_prism_eval("defined? self")
assert_prism_eval("defined? true")
@@ -140,7 +139,6 @@ module Prism
assert_prism_eval("x = 1; defined? x ||= 1")
assert_prism_eval("if defined? A; end")
-=end
end
def test_GlobalVariableReadNode