Bug 39891 - Diagnose parser crashed on code with syntax error.
Summary: Diagnose parser crashed on code with syntax error.
Status: RESOLVED INVALID
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.0   Edit
Hardware: PC Windows 2000
: P3 normal (vote)
Target Milestone: 3.0 M2   Edit
Assignee: David Audel CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2003-07-10 14:59 EDT by Olivier Thomann CLA
Modified: 2003-07-10 15:05 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Olivier Thomann CLA 2003-07-10 14:59:07 EDT
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.
Comment 1 Olivier Thomann CLA 2003-07-10 15:05:15 EDT
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.