😊

[Bug #20571] for 文で or を使うとコンパイルエラーになるバグ報告

2024/06/11に公開

[Bug #20571] Compile error on for loop

  • 以下のようなコードを実行するとコンパイルエラーになるというバグ報告
for _ in 1.5 or _ in []
end
__END__
output:
-- raw disasm--------
   trace: 1
 <L000> [sp: 0, unremovable: 1, refcnt: 1]
   0000 putobject            1.5                                         (   1)
   0002 jump                 <L002>                                      (   1)
 <L006> [sp: 1, unremovable: 1, refcnt: 1]
 <L004> [sp: 1, unremovable: 0, refcnt: 0]
   0004 pop                                                              (   1)
*  0005 pop                                                              (   1)
   0006 putobject            false                                       (   1)
 <L002> [sp: 1, unremovable: 0, refcnt: 1]
   0008 send                 <calldata:each, 0>, nil                     (   1)
 <L001> [sp: -1, unremovable: 0, refcnt: 2]
   0011 leave                                                            (   1)
---------------------
test.rb:1: argument stack underflow (-1)
test.rb: compile error (SyntaxError)
  • これ、各演算子(構文)の優先順位ってどういう扱いになるべきなんですかね…
GitHubで編集を提案

Discussion