summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2020-01-16 18:38:48 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2020-01-16 18:38:48 +0900
commitc171ab23e376b6c7f1094a77f137d916b0a403e6 (patch)
treee6306df59e96d5d70aa4172d19c91e47e5b753a2
parentf38b3e8c707ebdcad05aa9485cf1760640b74fbb (diff)
Separate numbered parameter scope in eval
[Feature #16432]
-rw-r--r--parse.y2
-rw-r--r--test/ruby/test_syntax.rb8
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