scalaで`package`というパッケージは作れるが問題が起こる可能性が高い

scalaではpackage objectの名前として`package`を決め打ちしているため、自分で`package`というパッケージを作ると間違った警告が出る。 また、package objectに対して一律変換を行うようなコンパイラプラグインがあると間違って処理されてしまう可能性が高い。
0
西田和史(k.bigwheel) 開発基盤エンジニア @ Speee ⌨️🦀🖊️ @k_bigwheel

scalaで`package`という名前のpackageを作ったら"package object内にクラスを宣言しないでください"みたいな警告が出てた。コードを追っていくとpackage objectは`package`という名前のpackageを内部的に作っているらしく(続く

2015-05-01 12:42:55
西田和史(k.bigwheel) 開発基盤エンジニア @ Speee ⌨️🦀🖊️ @k_bigwheel

コンパイラ内でpackage objectかどうかを判別するためにそのオブジェクトの名前が`package`かどうか github.com/scala/scala/bl… github.com/scala/scala/bl… で判別してるらしく、そこで衝突してるらしい。

2015-05-01 12:47:12
西田和史(k.bigwheel) 開発基盤エンジニア @ Speee ⌨️🦀🖊️ @k_bigwheel

github.com/scala/scala/bl… ここでpackage objectの名前(正確にはpackage object Aと宣言された場合、package `package` { object A }となる)の名前が定数で決められているのだけどこれが`package`固定

2015-05-01 12:53:35