Community
Participate
Working Groups
Try to compile the following with the current HEAD contents. class A { private void foo() { int i = 5; int j = 7; int k = 5; if (i < j > k) { System.out.println(); } } } You get: java.lang.ArrayIndexOutOfBoundsException at org.eclipse.jdt.internal.compiler.parser.Parser.tAction(Parser.java:6362) at org.eclipse.jdt.internal.compiler.parser.diagnose.DiagnoseParser.parseCheck(DiagnoseParser.java:1943) at org.eclipse.jdt.internal.compiler.parser.diagnose.DiagnoseParser.checkPrimaryDistance(DiagnoseParser.java:811) at org.eclipse.jdt.internal.compiler.parser.diagnose.DiagnoseParser.primaryPhase(DiagnoseParser.java:539) at org.eclipse.jdt.internal.compiler.parser.diagnose.DiagnoseParser.errorRecovery(DiagnoseParser.java:456) at org.eclipse.jdt.internal.compiler.parser.diagnose.DiagnoseParser.diagnoseParse(DiagnoseParser.java:366) at org.eclipse.jdt.internal.compiler.parser.Parser.reportSyntaxErrors(Parser.java:5619) at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:5611) at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:5801) at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.parseStatements(MethodDeclaration.java:95) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.parseMethod(TypeDeclaration.java:719) at org.eclipse.jdt.internal.compiler.Compiler.getMethodBodies(Compiler.java:381) at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:522) at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:328) at org.eclipse.jdt.internal.compiler.batch.Main.performCompilation(Main.java:1459) at org.eclipse.jdt.internal.compiler.batch.Main.compile(Main.java:304) at org.eclipse.jdt.internal.compiler.batch.Main.compile(Main.java:199) at org.eclipse.jdt.internal.compiler.batch.Main.compile(Main.java:191) at org.eclipse.jdt.core.tools.compiler.Compile.main(Compile.java:8) ---------- 1. ERROR in d:\temp\A.java (at line 0) class A { ^ Internal compiler error java.lang.ArrayIndexOutOfBoundsException at org.eclipse.jdt.internal.compiler.parser.Parser.tAction(Parser.java:6362) at org.eclipse.jdt.internal.compiler.parser.diagnose.DiagnoseParser.parseCheck(DiagnoseParser.java:1943) at org.eclipse.jdt.internal.compiler.parser.diagnose.DiagnoseParser.checkPrimaryDistance(DiagnoseParser.java:811) at org.eclipse.jdt.internal.compiler.parser.diagnose.DiagnoseParser.primaryPhase(DiagnoseParser.java:539) at org.eclipse.jdt.internal.compiler.parser.diagnose.DiagnoseParser.errorRecovery(DiagnoseParser.java:456) at org.eclipse.jdt.internal.compiler.parser.diagnose.DiagnoseParser.diagnoseParse(DiagnoseParser.java:366) at org.eclipse.jdt.internal.compiler.parser.Parser.reportSyntaxErrors(Parser.java:5619) at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:5611) at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:5801) at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.parseStatements(MethodDeclaration.java:95) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.parseMethod(TypeDeclaration.java:719) at org.eclipse.jdt.internal.compiler.Compiler.getMethodBodies(Compiler.java:381) at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:522) at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:328) at org.eclipse.jdt.internal.compiler.batch.Main.performCompilation(Main.java:1459) at org.eclipse.jdt.internal.compiler.batch.Main.compile(Main.java:304) at org.eclipse.jdt.internal.compiler.batch.Main.compile(Main.java:199) at org.eclipse.jdt.internal.compiler.batch.Main.compile(Main.java:191) at org.eclipse.jdt.core.tools.compiler.Compile.main(Compile.java:8) ---------- Javac 1.4.2 reports: A.java:7: operator > cannot be applied to boolean,int if (i < j > k) { ^ 1 error Jikes 1.18 reports: Found 1 semantic error compiling "D:/temp/A.java": 7. if (i < j > k) { ^---^ *** Semantic Error: The type of this expression, "boolean", is not numeric.
Forget about it. This is due to the fact that I put my scanner in lookahead mode without using a 1.5 grammar <g>. The '<' is seen as the '<' in the generic syntax. Close as INVALID.