diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-12-20 08:18:19 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-12-20 08:18:19 +0900 |
commit | 2898367b3a1de00ca78067cc17dd4d1f8df37778 (patch) | |
tree | 31877bb6bac8dd37999879d38db1b2e2d02868cc | |
parent | 3816cd945d68eac7ca8fecbc9d71f878ff3e7b3d (diff) | |
download | ruby-2898367b3a1de00ca78067cc17dd4d1f8df37778.tar.gz |
Warn also numbered parameter like methods
-rw-r--r-- | parse.y | 3 | ||||
-rw-r--r-- | test/ruby/test_syntax.rb | 2 |
2 files changed, 5 insertions, 0 deletions
@@ -188,6 +188,7 @@ numparam_id_p(ID id) unsigned int idx = NUMPARAM_ID_TO_IDX(id); return idx > 0 && idx <= NUMPARAM_MAX; } +static void numparam_name(struct parser_params *p, ID id); #define DVARS_INHERIT ((void*)1) #define DVARS_TOPSCOPE NULL @@ -2981,6 +2982,7 @@ primary : literal } | k_def fname { + numparam_name(p, get_id($2)); local_push(p, 0); $<id>$ = p->cur_arg; p->cur_arg = 0; @@ -3007,6 +3009,7 @@ primary : literal } | k_def singleton dot_or_colon {SET_LEX_STATE(EXPR_FNAME);} fname { + numparam_name(p, get_id($5)); $<num>4 = p->in_def; p->in_def = 1; SET_LEX_STATE(EXPR_ENDFN|EXPR_LABEL); /* force for args */ diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index b292b24894..5eb69c5144 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -1441,6 +1441,8 @@ eom assert_warn(/`_2' is used as numbered parameter/) {eval('_2=1')} assert_warn(/`_3' is used as numbered parameter/) {eval('proc {|_3|}')} assert_warn(/`_4' is used as numbered parameter/) {instance_eval('def x(_4) end')} + assert_warn(/`_5' is used as numbered parameter/) {instance_eval('def _5; end')} + assert_warn(/`_6' is used as numbered parameter/) {instance_eval('def self._6; end')} assert_raise_with_message(NameError, /undefined local variable or method `_1'/) { eval('_1') } |