DEV Community

KOGA Mitsuhiro
KOGA Mitsuhiro

Posted on

Groovy2系(Gradle)はコメント中の\uもUnicodeエスケープされる

Groovy2系の文字列リテラルは\u0000のように\uに続けて4桁の数字でUnicodeエスケープされます。
このUnicodeエスケープは文字列リテラルだけではなく困った事にコメントにも適用されます。なので例えば以下のようなコメントを書くとエラーになります。

// C:\upload
Enter fullscreen mode Exit fullscreen mode

この動作は以下のバグレポートによるとバージョン2系のパーサーはunicode readerでソースコードを読み込むので発生するとコメントされていました。つまり文字列やコメントだけではなくコードすべてに対してUnicodeエスケープしているという事です。

バージョン3系ではパーサーが新しくなりコメントに\uを含めることができます。またドキュメントから見つけられなかったのですがスラッシュ文字列とドルスラッシュ文字列も\uはUnicodeエスケープされなくなりました。

とは言え、まだリリースされていないので今はどうにかしてコード中から\uを取り除く必要があります。

そもそもの発端はUnityでAndroid用にカスタム build.gradle テンプレートを利用してDIR_UNITYPROJECTをプロジェクトフォルダの絶対パスに置換する機能を使った時にuで始まるフォルダがあった事が原因でWindowsでエラーが起きた事でした。
Unity2019.1以降ならDIR_UNITYPROJECTを置換する時にパス区切り文字をエスケープして\\で出力するのでこの変数で問題は起きないようです。

Top comments (0)