From bc3199bb298d9d29d66aedeb1139715893ebfea8 Mon Sep 17 00:00:00 2001 From: Kevin Newton Date: Tue, 28 May 2024 14:49:39 -0400 Subject: [PRISM] Enable TestAssignmentGen#test_assignment --- prism_compile.c | 12 +++++++++--- test/.excludes-prism/TestAssignmentGen.rb | 1 - 2 files changed, 9 insertions(+), 4 deletions(-) delete mode 100644 test/.excludes-prism/TestAssignmentGen.rb diff --git a/prism_compile.c b/prism_compile.c index 7880e6d231..022305effe 100644 --- a/prism_compile.c +++ b/prism_compile.c @@ -4036,9 +4036,15 @@ pm_compile_target_node(rb_iseq_t *iseq, const pm_node_t *node, LINK_ANCHOR *cons // // for i, j in []; end // - if (state != NULL) state->position--; + size_t before_position; + if (state != NULL) { + before_position = state->position; + state->position--; + } + pm_compile_multi_target_node(iseq, node, parents, writes, cleanup, scope_node, state); - if (state != NULL) state->position++; + if (state != NULL) state->position = before_position; + break; } default: @@ -4095,7 +4101,7 @@ pm_compile_multi_target_node(rb_iseq_t *iseq, const pm_node_t *node, LINK_ANCHOR if (state == NULL) state = &target_state; size_t base_position = state->position; - size_t splat_position = has_rest ? 1 : 0; + size_t splat_position = (has_rest || has_posts) ? 1 : 0; // Next, we'll iterate through all of the leading targets. for (size_t index = 0; index < lefts->size; index++) { diff --git a/test/.excludes-prism/TestAssignmentGen.rb b/test/.excludes-prism/TestAssignmentGen.rb deleted file mode 100644 index 5f3bb12ef7..0000000000 --- a/test/.excludes-prism/TestAssignmentGen.rb +++ /dev/null @@ -1 +0,0 @@ -exclude(:test_assignment, "https://github.com/ruby/prism/issues/2370") -- cgit v1.2.3