From c171ab23e376b6c7f1094a77f137d916b0a403e6 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Thu, 16 Jan 2020 18:38:48 +0900 Subject: [PATCH] Separate numbered parameter scope in eval [Feature #16432] --- parse.y | 2 +- test/ruby/test_syntax.rb | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/parse.y b/parse.y index 21b384d10a..1facda553e 100644 --- a/parse.y +++ b/parse.y @@ -12041,7 +12041,7 @@ dvar_defined_ref(struct parser_params *p, ID id, ID **vidrefp) if (used) used = used->prev; } - if (vars == DVARS_INHERIT) { + if (vars == DVARS_INHERIT && !NUMPARAM_ID_P(id)) { return rb_dvar_defined(id, p->parent_iseq); } diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index b93062cf2d..5591b7cb31 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -1450,7 +1450,13 @@ eom assert_valid_syntax("->{_1;#{c};->{_1};end}\n") end - 1.times {_1} + 1.times { + [ + _1, + assert_equal([:a], eval("[:a].map{_1}")), + assert_raise(NameError) {eval("_1")}, + ] + } end def test_value_expr_in_condition