From e8d393c8ae0c6282262b7a7886947379a9fd81a3 Mon Sep 17 00:00:00 2001 From: Matt Valentine-House Date: Fri, 20 Dec 2024 09:52:11 +0000 Subject: [PATCH] [PRISM] Treat it as a local when compiling patterns Fixes [Bug #20973] --- 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 c15725c7ab..1a89a15e91 100644 --- a/prism_compile.c +++ b/prism_compile.c @@ -3029,6 +3029,7 @@ pm_compile_pattern(rb_iseq_t *iseq, pm_scope_node_t *scope_node, const pm_node_t case PM_GLOBAL_VARIABLE_READ_NODE: case PM_IMAGINARY_NODE: case PM_INSTANCE_VARIABLE_READ_NODE: + case PM_IT_LOCAL_VARIABLE_READ_NODE: case PM_INTEGER_NODE: case PM_INTERPOLATED_REGULAR_EXPRESSION_NODE: case PM_INTERPOLATED_STRING_NODE: diff --git a/test/ruby/test_compile_prism.rb b/test/ruby/test_compile_prism.rb index d182549b13..043d5d8c0e 100644 --- a/test/ruby/test_compile_prism.rb +++ b/test/ruby/test_compile_prism.rb @@ -2530,6 +2530,7 @@ end assert_prism_eval("module Prism; @prism = 1; 1 in ^@prism; end") assert_prism_eval("$prism = 1; 1 in ^$prism") assert_prism_eval("prism = 1; 1 in ^prism") + assert_prism_eval("[1].each { 1 => ^it }") end ############################################################################