summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJemma Issroff <jemmaissroff@gmail.com>2023-11-02 14:45:44 -0300
committerJemma Issroff <jemmaissroff@gmail.com>2023-11-02 17:46:43 -0300
commitddf12e8a3be135baf77a8adc833a37f93cf8f3d1 (patch)
treea831f51157786f77008d384460667b3a4eadc469
parentca24136da61c9bca9a8260cb0ac2ff206f6f3843 (diff)
[PRISM] Fix popped for ConstantPathOrWriteNode
-rw-r--r--prism_compile.c4
-rw-r--r--test/ruby/test_compile_prism.rb4
2 files changed, 4 insertions, 4 deletions
diff --git a/prism_compile.c b/prism_compile.c
index 6b8bf06bfe..2439a8d006 100644
--- a/prism_compile.c
+++ b/prism_compile.c
@@ -1939,7 +1939,7 @@ pm_compile_node(rb_iseq_t *iseq, const pm_node_t *node, LINK_ANCHOR *const ret,
LABEL *lfin = NEW_LABEL(lineno);
pm_constant_path_node_t *target = constant_path_or_write_node->target;
- PM_COMPILE(target->parent);
+ PM_COMPILE_NOT_POPPED(target->parent);
pm_constant_read_node_t *child = (pm_constant_read_node_t *)target->child;
VALUE child_name = ID2SYM(pm_constant_id_lookup(scope_node, child->name));
@@ -1957,7 +1957,7 @@ pm_compile_node(rb_iseq_t *iseq, const pm_node_t *node, LINK_ANCHOR *const ret,
PM_POP_UNLESS_POPPED;
ADD_LABEL(ret, lassign);
- PM_COMPILE(constant_path_or_write_node->value);
+ PM_COMPILE_NOT_POPPED(constant_path_or_write_node->value);
if (popped) {
ADD_INSN1(ret, &dummy_line_node, topn, INT2FIX(1));
diff --git a/test/ruby/test_compile_prism.rb b/test/ruby/test_compile_prism.rb
index f30c3b621b..51f36f48a3 100644
--- a/test/ruby/test_compile_prism.rb
+++ b/test/ruby/test_compile_prism.rb
@@ -214,8 +214,8 @@ module Prism
end
def test_ConstantPathOrWriteNode
- # assert_prism_eval("Prism::CPOrWN = nil; Prism::CPOrWN ||= 1")
- # assert_prism_eval("Prism::CPOrWN ||= 1")
+ assert_prism_eval("Prism::CPOrWN = nil; Prism::CPOrWN ||= 1")
+ assert_prism_eval("Prism::CPOrWN ||= 1")
end
def test_ConstantPathOperatorWriteNode