【一人 bugs.ruby Advent Calendar 2021】[Bug #10593] Emoji is been considered as comment【3日目】
一人 bugs.ruby Advent Calendar 2021 3日目の記事になります。
#️⃣
絵文字以降の Ruby のコードがコメントアウトとして扱われてしまうというバグ報告です。
[Bug #10593] Emoji is been considered as comment
#️⃣
という絵文字を書いた以降がコメントアウトとして扱われてしまいます。
#️⃣ これはコメントアウトです #️⃣ Ruby のコードは実行されません puts "hello, world" #️⃣ これはコメントアウト
これは #️⃣
が囲み文字と呼ばれている絵文字で # + 特殊なコードポイント
で表現されているからです。
実際に #️⃣
のバイト列は U+0023 + U+FE0F + U+20E3
となっていて U+0023
が #
のバイト列になります。
Rby のコードとして字句解析するとこんな感じになります。
require "ripper" # コメントとして字句解析される p Ripper.lex("#️⃣") # => [[[1, 0], :on_comment, "#️⃣", BEG]] # こっちは普通の文字になる p Ripper.lex("😀") # => [[[1, 0], :on_ident, "😀", CMDARG]]
なのでこれは仕様ということで閉じられています。
面白いですねーこれ。