|
If you come across a bug in the j-- compiler, please let us know about it at j--@cs.umb.edu. We appreciate your feedback. Known IssuesReported by Vy Thao Nguyen on Feb 17, 2013 - (fixed) The following snippet produces correct code (class file) but reports a code generation error. Fix: override the short-circut form of codegen() in JInstanceOfOp.
...
if ("Hello, world!" instanceof String) {
System.out.println("True");
}
else {
System.out.println("False");
}
...
Reported by Sascha Van Cauwelaert on Feb 14, 2013 - (fixed) A non-void method without a return statement does not result in a compilation error. Fix: use a predicate in JMethodDeclaration to check if a non-void method is missing a return statement, and if so report an error. Reported by Sascha Van Cauwelaert on Feb 14, 2013 - (fixed) The code generated for boolean arrays is incorrect. Fix: for boolean arrays, use baload/bastore instructions in JArrayExpression and JArrayInitializer instead of iaload/iastore instructions. Reported by Olivier Tilmans on Feb 11, 2013 - (fixed) The JavaCC parser for j-- does not parse a statement such as int a = new int[10] correctly. The problem is in the implementation of the creator() method in the j--.jj file. Here is the fix:
private JExpression creator(): {
int line = 0;
Type type = null;
ArrayList<JExpression> args = null;
ArrayList<JExpression> dims = null;
JArrayInitializer init = null;
JExpression expr = null;
Type expected = null;
}
{
try {
( type = basicType() |
type = qualifiedIdentifier() )
{ line = token.beginLine; expected = type; }
(
args = arguments()
{ expr = new JNewOp( line, type, args ); } |
LOOKAHEAD( <LBRACK> expression() <RBRACK> )
expr = newArrayDeclarator( type ) |
<LBRACK> <RBRACK> { expected = new ArrayTypeName( expected ); }
(
LOOKAHEAD( <LBRACK> <RBRACK> )
<LBRACK> <RBRACK>
{ expected = new ArrayTypeName( expected ); }
)*
[
expr = arrayInitializer( expected )
]
)
}
catch ( ParseException e ) {
expr = new JWildExpression( token.beginLine );
recoverFromError( new int[] { SEMI, EOF }, e );
}
{ return expr; }
}
Reported by Dzu Nguyen on Jan 31, 2013 - (fixed) Non-static calls to TestCase.assertEquals() method in the test files under $j/j--/tests/junit result in compiler warnings if you use Java 7. |