😺

[Bug #18878] Foo::Bar {} が意図せずエラーになるというバグ報告

に公開

[Bug #18878] parse.y: Foo::Bar {} is inconsistently rejected

  • Foo::Bar {} が意図せずエラーになるというバグ報告
    • 報告があったのは3年前の Ruby 3.1 の時
class Foo
  def self.Bar
  end
end

Foo::Bar {}
__END__
output:
test.rb: --> test.rb
syntax error, unexpected '{'
> 6  Foo::Bar {}
test.rb:6: syntax error, unexpected '{' (SyntaxError)
Foo::Bar {}
         ^
  • これなんですが Ruby 3.2 までは再現していたんですが Ruby 3.3 からはエラーにならなくなったみたいですね
  • ただし、次のように Foo::Bar {} + 1 なコードは prism だと問題ないんですが parse.y だと依然として Ruby 3.4 でも SyntaxError になるみたいですね
    • ちなみに Foo::Bar() {} + 1 みたいなのは問題ない
class Foo
  def self.Bar
    42
  end
end

Foo::Bar {} + 1
# parse.y # => SyntaxError
# prism   # => no error
GitHubで編集を提案

Discussion