Community
Participate
Working Groups
Version: 3.2.0 Build id: I20060223-1656 I found several of the attached exceptions in my log. No error dialog was displayed and i do not have any steps to reproduce java.lang.ClassCastException: org.eclipse.jdt.internal.compiler.ast.TypeDeclaration cannot be cast to org.eclipse.jdt.internal.compiler.ast.Block at org.eclipse.jdt.internal.compiler.parser.Parser.consumeStatementTry(Parser.java:6825) at org.eclipse.jdt.internal.compiler.parser.Parser.consumeRule(Parser.java:5410) at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:8852) at org.eclipse.jdt.internal.compiler.parser.Parser.parseStatements(Parser.java:9322) at org.eclipse.jdt.internal.compiler.parser.Parser$1$MethodVisitor.endVisitMethod(Parser.java:9589) at org.eclipse.jdt.internal.compiler.parser.Parser$1$MethodVisitor.endVisit(Parser.java:9575) at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.traverse(MethodDeclaration.java:216) at org.eclipse.jdt.internal.compiler.parser.Parser.recoverStatements(Parser.java:9680) at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:8896) at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:9165) at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.parseStatements(MethodDeclaration.java:117) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.parseMethod(TypeDeclaration.java:854) at org.eclipse.jdt.internal.compiler.parser.Parser.getMethodBodies(Parser.java:8111) at org.eclipse.jdt.internal.compiler.SourceElementParser.parseCompilationUnit(SourceElementParser.java:1416) at org.eclipse.jdt.internal.core.CompilationUnit.buildStructure(CompilationUnit.java:132) at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:229) at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:503) at org.eclipse.jdt.internal.core.CompilationUnit.makeConsistent(CompilationUnit.java:975) at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.makeConsistent(ReconcileWorkingCopyOperation.java:131) at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:71) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:720) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:779) at org.eclipse.jdt.internal.core.CompilationUnit.reconcile(CompilationUnit.java:1102) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy$1.run(JavaReconcilingStrategy.java:97) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:82) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:145) at org.eclipse.jdt.internal.ui.text.CompositeReconcilingStrategy.reconcile(CompositeReconcilingStrategy.java:86) at org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.reconcile(JavaCompositeReconcilingStrategy.java:94) at org.eclipse.jface.text.reconciler.MonoReconciler.process(MonoReconciler.java:75) at org.eclipse.jdt.internal.ui.text.JavaReconciler.process(JavaReconciler.java:339) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:204)
Many changes have been done in compiler since your build (post 3.2 M5). May you retry with a more recent one, 3.2 RC3 and let us know if this problem still occurs? Thanks
I can reproduce the problem with build N20060510-0010 and this test case: public class X { void foo() { # try { System.out.println(); } catch (Exception e) { } class Z {} } } The problem seems to be in statements recovery
+1 for 3.2RC4, since regression over 3.1 (where was no statement recovery)
If fix is too involving, might be better to address in 3.2.1/3.3... and only do the minimum here to address ClassCastException...
Another test case: public class X { void foo() { # try { System.out.println(); } catch (Exception e) { class Z {} } } }
Deferring, as early investigation is proving to be too risk for a RC4 fix.
*** Bug 145459 has been marked as a duplicate of this bug. ***
This PR was tentatively tagged for 3.2.1, but the problem is tricky and more general than this very testcase, and a real fix should be investigated during 3.3. Possibly, we will backport a fix to a 3.2 maintenance stream (either official or unofficial - patch). Removing 3.2.1 tag for current time being.
*** Bug 158029 has been marked as a duplicate of this bug. ***
Created attachment 53736 [details] Proposed fix
Released for 3.3 M4. Tests added DietRecoveryTest#test117_2() DietRecoveryTest#test120() -> test123()
Created attachment 53737 [details] Possible fix fo 3.2
Reopen for 3.2.2 investigation.
Removing 3.2.2 commitment, fix is not trivial, and released late for 3.3M4 inclusion. Need more exercizing.
Verified for 3.3 M4 using build I20061214-1445.