🐈

[Bug #20675] Hash の省略記法の末尾の改行を無視するかどうかのチケット

2024/08/16に公開

[Bug #20675] Parse error with required kwargs and omitted parens

  • 最初は mruby 起因の話なのですが CRuby では次のようにメソッド定義にカッコ() がない場合は次の行まで参照しないようになっています
def foo arg:
  123
end
def foo(arg:)
  123
end
  • のように解釈されます
    • ちなみに mruby 3.3.0 だと def foo(arg: 123) と解釈されるらしい
  • これを踏まえた上で Hash の省略記法を想定した場合に
k=25
f k:
  10
  • のときには
k=25
f(k: 10)
  • のようにキーワードのラベルは改行を考慮したほうがいいのか無視したほうがいいのか、という旨のチケットになっている
    • matz がチケット立てている
  • これ、Hash の省略記法が実装されたあとでも同じような話題が上がっていましたねー
  • どちらにしても改行を無視する場合は非互換になってしまうのでそのあたりどうするべきなのか、みたいな話にはなっていますね
  • 個人的には改行は無視してくれたほうが変な混乱はないと思うんだけども実際に依存しているケースもあるらしいので難しそう
GitHubで編集を提案

Discussion