diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-11-06 12:41:55 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-11-06 12:44:50 +0900 |
commit | 82e840ad15bba42b399a21de746967a731240ec2 (patch) | |
tree | b05d6e9dc6e04d1410b99903a4795c9735bf16f2 | |
parent | f72dc407f2f682063cf3d7683b879b430481b4ce (diff) | |
download | ruby-82e840ad15bba42b399a21de746967a731240ec2.tar.gz |
Numbered parameter cannot appear outside block now [Bug #16293]
-rw-r--r-- | parse.y | 1 | ||||
-rw-r--r-- | test/ruby/test_syntax.rb | 3 |
2 files changed, 3 insertions, 1 deletions
@@ -8601,7 +8601,6 @@ parser_numbered_param(struct parser_params *p, int n) if (n < 0) return false; if (DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev)) { - compile_error(p, "numbered parameter outside block"); return false; } if (p->max_numparam == ORDINAL_PARAM) { diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index 5c2a9fc289..b55e579062 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -1457,6 +1457,9 @@ eom assert_syntax_error('-> {-> {_1}; _2}', /numbered parameter is already used/) assert_warn(/`_1' is used as numbered parameter/) {eval('proc {_1 = nil}')} assert_warn(/`_2' is used as numbered parameter/) {eval('_2=1')} + assert_raise_with_message(NameError, /undefined local variable or method `_1'/) { + eval('_1') + } ['class C', 'class << C', 'module M', 'def m', 'def o.m'].each do |c| assert_valid_syntax("->{#{c};->{_1};end;_1}\n") assert_valid_syntax("->{_1;#{c};->{_1};end}\n") |