朗報です!つい最近 Xtend のバージョンが 2.4.3 になりました。
このバージョンアップで、文字列リテラルの変換方法が変わったようです。
2.4.2 までは、以下のように英数字*1以外の文字は、Unicode 表記で.java に出力されていました。
Hoge.xtend
package sample class Hoge { def method() { val str = "abcあいうえお" println(str) } }Hoge.java
package sample; import org.eclipse.xtext.xbase.lib.InputOutput; @SuppressWarnings("all") public class Hoge { public String method() { String _xblockexpression = null; { final String str = "abc\u3042\u3044\u3046\u3048\u304A"; String _println = InputOutput.<String>println(str); _xblockexpression = (_println); } return _xblockexpression; } }
2.4.3 からは、以下のようになっています。
Hoge.java
package sample; import org.eclipse.xtext.xbase.lib.InputOutput; @SuppressWarnings("all") public class Hoge { public String method() { String _xblockexpression = null; { final String str = "abcあいうえお"; String _println = InputOutput.<String>println(str); _xblockexpression = (_println); } return _xblockexpression; } }
ってことは、識別子に日本語使えるんじゃね?って事で試してみました。
てすとくらす.xtend
package sample class てすとくらす { def てすとくらす 関数(int 引数1, てすとくらす 引数2) { return new てすとくらす() } }てすとくらす.java
package sample; @SuppressWarnings("all") public class てすとくらす { public てすとくらす 関数(final int 引数1, final てすとくらす 引数2) { てすとくらす _てすとくらす = new てすとくらす(); return _てすとくらす; } }いけてますね!2.4.2 までは、
識別子の名前も Unicode表記(\u3042 とか)にしようとしてたみたいで、そのせいでコンパイルエラーになっていました。("\" が使えない)なんでかエラーになっていました。2.4.2 でコンパイルした時のエラー
2.4.3 で文字列の吐き方が変わったので、いけるかなーと試したら案の定いけたのでより便利になりましたね!
*1:たぶん ASCII