From: hjwylde@... Date: 2020-11-18T08:55:42+00:00 Subject: [ruby-core:100928] [Ruby master Bug#17332] No error when using endless method definitions with `self.` setters Issue #17332 has been reported by hjwylde (Henry Wylde). ---------------------------------------- Bug #17332: No error when using endless method definitions with `self.` setters https://bugs.ruby-lang.org/issues/17332 * Author: hjwylde (Henry Wylde) * Status: Open * Priority: Normal * ruby -v: ruby 3.0.0preview1 (2020-09-25 master 0096d2b895) [x86_64-linux] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- With the current ruby (preview1) it is possible to use endless method definitions to define "setter" methods on some object (e.g., on `self.` or `obj.`). The following code passes: ``` irb(main):001:0> def self.foo=() = 1 => :foo= irb(main):002:0> obj = Object.new; def obj.foo=() = 1 => :foo= ``` From my understanding, setter methods are not intended to be allowed with endless method definitions. Expected result: The same error to occur for all setter methods ("setter method cannot be defined in an endless method definition"). E.g., ``` irb(main):004:0> def foo=() = 1 Traceback (most recent call last): 3: from /home/hjwylde/.rbenv/versions/3.0/bin/irb:23:in `
' 2: from /home/hjwylde/.rbenv/versions/3.0/bin/irb:23:in `load' 1: from /home/hjwylde/.rbenv/versions/3.0.0-preview1/lib/ruby/gems/3.0.0/gems/irb-1.2.7/exe/irb:11:in `' SyntaxError ((irb):4: setter method cannot be defined in an endless method definition) def foo=() = 1 ^~~~~~~~ ``` -- https://bugs.ruby-lang.org/ Unsubscribe: