From 82f7cb794109794f6ffa95ffb3be8e5149dd74bd Mon Sep 17 00:00:00 2001 From: Takashi Kokubun Date: Thu, 13 Feb 2025 17:52:28 -0800 Subject: merge revision(s) ad96c5a72908042489357b73dc936c4bc38d919b, ca81142eff98cccb03ff523322aefe4e7346fd0e: [Backport #21010] [ruby/prism] Throw syntax error for endless method with `[]=` Prism shoudld throw a syntax error for endless methods when the method name uses brackets. Previously it would not. This matches the behavior of parse.y. Fixes https://bugs.ruby-lang.org/issues/21010 https://github.com/ruby/prism/commit/43c16a89ef [ruby/prism] [Bug #21010] Reject endless method definition of `[]=` Fixes: https://bugs.ruby-lang.org/issues/20785 https://github.com/ruby/prism/commit/192960ce5d --- test/prism/errors/defs_endless_method.txt | 12 ++++++++++++ ...hod_cannot_be_defined_in_an_endless_method_definition.txt | 3 +++ 2 files changed, 15 insertions(+) create mode 100644 test/prism/errors/defs_endless_method.txt (limited to 'test') diff --git a/test/prism/errors/defs_endless_method.txt b/test/prism/errors/defs_endless_method.txt new file mode 100644 index 0000000000..80db648e62 --- /dev/null +++ b/test/prism/errors/defs_endless_method.txt @@ -0,0 +1,12 @@ +def f=(k,v)=1 + ^~ invalid method name; a setter method cannot be defined in an endless method definition + +def obj.f=(k,v)=1 + ^~ invalid method name; a setter method cannot be defined in an endless method definition + +def []=(k,v)=1 + ^~~ invalid method name; a setter method cannot be defined in an endless method definition + +def obj.[]=(k,v)=1 + ^~~ invalid method name; a setter method cannot be defined in an endless method definition + diff --git a/test/prism/errors/setter_method_cannot_be_defined_in_an_endless_method_definition.txt b/test/prism/errors/setter_method_cannot_be_defined_in_an_endless_method_definition.txt index c4440ccc7e..7927664f3c 100644 --- a/test/prism/errors/setter_method_cannot_be_defined_in_an_endless_method_definition.txt +++ b/test/prism/errors/setter_method_cannot_be_defined_in_an_endless_method_definition.txt @@ -1,3 +1,6 @@ def a=() = 42 ^~ invalid method name; a setter method cannot be defined in an endless method definition +def []=() = 42 + ^~~ invalid method name; a setter method cannot be defined in an endless method definition + -- cgit v1.2.3