diff options
author | Yusuke Endoh <mame@ruby-lang.org> | 2020-08-31 16:49:16 +0900 |
---|---|---|
committer | Yusuke Endoh <mame@ruby-lang.org> | 2020-08-31 20:30:27 +0900 |
commit | 53ba9fb74ec57c18c3589e2e51f84a36467e3d9e (patch) | |
tree | a2cad39cc4cf418580b38c580a7a5940490d60da | |
parent | 86737c509cd49cfe4509a65d300d390da0f07be6 (diff) |
Prohibit setter method names in endless method definition
https://bugs.ruby-lang.org/issues/16746#note-26
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/3479
-rw-r--r-- | parse.y | 3 | ||||
-rw-r--r-- | test/ruby/test_syntax.rb | 1 |
2 files changed, 4 insertions, 0 deletions
@@ -2474,6 +2474,9 @@ arg : lhs '=' arg_rhs } | defn_head f_paren_args '=' arg { + if (is_attrset_id($<node>1->nd_mid)) { + yyerror1(&@1, "setter method cannot be defined in an endless method definition"); + } token_info_drop(p, "def", @1.beg_pos); restore_defun(p, $<node>1->nd_defn); /*%%%*/ diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index 546b5a27e1..fb982e8a1f 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -1429,6 +1429,7 @@ eom end assert_equal("class ok", k.rescued("ok")) assert_equal("instance ok", k.new.rescued("ok")) + assert_syntax_error('def foo=() = 42', /setter method cannot be defined in an endless method definition/) end def test_methoddef_in_cond |