Java1.5Checker.jar (JastAdd) の型検査の不具合

JastAdd (JastAddJ) を試してみたのだが、1.5 の FrontEnd の generics 周りの型チェックに問題があるみたいだ。

使用したのは、http://jastadd.org/the-jastadd-extensible-java-compiler のページにある http://builds.jastadd.org/JastAddJ/latest/Java1.5Checker.jar
svn にある最新版もこの問題点は変わらない。

次の Java コードが型検査に通ってしまう。

class Test<X> {
  X x=new Object();
}

このクラスを含むファイルを、Test.java とし、Java1.5Checker.jar があるディレクトリで、

java -classpath Java1.5Checker.jar JavaChecker Test.java

とすれば、通ることが確認できる。

これは、javac の型検査には通らない。

Test.java:2: 互換性のない型
検出値  : java.lang.Object
期待値  : X
  X x=new Object();
          ^
エラー 1個

となる。

詳細を省くが、クラス Test が持つコードによっては、実行時に ClassCastException の例外が発生する可能性がある。