Community
Participate
Working Groups
Build ID: I20080617-2000 Steps To Reproduce: 1.Go to Windows > Preferences > Java > Editor > Save Actions > (Check all the options like auto import on save, format all source on save, Additional actions > Configure > Using all tabs check finalization of fields etc options). 2.Create a file with some content on it. (In my case it was a project specific file.) 3.Save. Shows AST must be null. Please see the log information pop up. More information: Gives this exception in Log. !ENTRY org.eclipse.jdt.ui 4 2 2008-09-17 10:47:25.888 !MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jdt.ui". !STACK 1 Java Model Exception: java.lang.ArrayIndexOutOfBoundsException: 1 at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:222) at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:243) at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.makeConsistent(ReconcileWorkingCopyOperation.java:190) at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:89) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:709) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:770) at org.eclipse.jdt.internal.core.CompilationUnit.reconcile(CompilationUnit.java:1224) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:124) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.access$0(JavaReconcilingStrategy.java:108) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy$1.run(JavaReconcilingStrategy.java:89) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:87) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:149) at org.eclipse.jdt.internal.ui.text.CompositeReconcilingStrategy.reconcile(CompositeReconcilingStrategy.java:86) at org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.reconcile(JavaCompositeReconcilingStrategy.java:102) at org.eclipse.jface.text.reconciler.MonoReconciler.process(MonoReconciler.java:77) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:206) Caused by: java.lang.ArrayIndexOutOfBoundsException: 1 at org.eclipse.jdt.internal.compiler.lookup.MethodBinding.collectMissingTypes(MethodBinding.java:314) at org.eclipse.jdt.internal.compiler.ClassFile.generateMethodInfoAttribute(ClassFile.java:6299) at org.eclipse.jdt.internal.compiler.ClassFile.addProblemMethod(ClassFile.java:949) at org.eclipse.jdt.internal.compiler.ClassFile.createProblemType(ClassFile.java:195) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:500) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:581) at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.generateCode(CompilationUnitDeclaration.java:356) at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:865) at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:904) at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:182) ... 16 more Caused by: java.lang.ArrayIndexOutOfBoundsException: 1 at org.eclipse.jdt.internal.compiler.lookup.MethodBinding.collectMissingTypes(MethodBinding.java:314) at org.eclipse.jdt.internal.compiler.ClassFile.generateMethodInfoAttribute(ClassFile.java:6299) at org.eclipse.jdt.internal.compiler.ClassFile.addProblemMethod(ClassFile.java:949) at org.eclipse.jdt.internal.compiler.ClassFile.createProblemType(ClassFile.java:195) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:500) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:581) at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.generateCode(CompilationUnitDeclaration.java:356) at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:865) at org.eclipse.jdt.internal.compiler.Compiler.resolve(Compiler.java:904) at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:182) at org.eclipse.jdt.internal.core.CompilationUnitProblemFinder.process(CompilationUnitProblemFinder.java:243) at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.makeConsistent(ReconcileWorkingCopyOperation.java:190) at org.eclipse.jdt.internal.core.ReconcileWorkingCopyOperation.executeOperation(ReconcileWorkingCopyOperation.java:89) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:709) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:770) at org.eclipse.jdt.internal.core.CompilationUnit.reconcile(CompilationUnit.java:1224) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:124) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.access$0(JavaReconcilingStrategy.java:108) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy$1.run(JavaReconcilingStrategy.java:89) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:87) at org.eclipse.jdt.internal.ui.text.java.JavaReconcilingStrategy.reconcile(JavaReconcilingStrategy.java:149) at org.eclipse.jdt.internal.ui.text.CompositeReconcilingStrategy.reconcile(CompositeReconcilingStrategy.java:86) at org.eclipse.jdt.internal.ui.text.JavaCompositeReconcilingStrategy.reconcile(JavaCompositeReconcilingStrategy.java:102) at org.eclipse.jface.text.reconciler.MonoReconciler.process(MonoReconciler.java:77) at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:206) !SUBENTRY 1 org.eclipse.jdt.core 4 1005 2008-09-17 10:47:25.888 !MESSAGE 1 !STACK 0
Can you provide the file? I assume the file was still saved but just Clean Up not done, right. Moving to JDT Core as the exception happens there, though the stack trace only shows reconciler stuff and not save related issues.
A test case would be nice to create a regression test. The problem is obvious: for (int j = 0, length = interfaces.length; j < length; j++) { missingTypes = interfaces[i].collectMissingTypes(missingTypes); } it should be: interfaces[j] Philippe, I think the change is safe enough to go into 3.4.2 and 3.5M2.
Created attachment 112892 [details] Proposed fix Philippe, please review.
Fix is good, here is an example: public class X { <U,V extends Runnable> void foo(Zork z) {} void bar() { foo(null); } }
Created attachment 114081 [details] Patch with tests Thanks for the fix Olivier, added a test for it.
Added ProblemTypeAndMethodTest#test090. Released for 3.5M3. Fixed
Candidating for 3.4.2. This is a trivial fix, and a regression over 3.3.2 introduced in 3.4.0 with support for missing types. In 3.3.2: Eclipse Java Compiler 0.791_R33x, 3.3.2, Copyright IBM Corp 2000, 2008. All rights reserved. [compiled 230 lines in 438 ms: 525.1 lines/s] ---------- 1. ERROR in X.java (at line 2) <U,V extends Runnable> void foo(Zork z) {} ^^^^ Zork cannot be resolved to a type ---------- 2. ERROR in X.java (at line 4) foo(null); ^^^ The method foo(null) is undefined for the type X ---------- 2 problems (2 errors) In 3.4.1: Eclipse Java Compiler 0.883_R34x, 3.4.1 release, Copyright IBM Corp 2000, 2008. All rights reserved. [total compilation time: 454] ---------- 1. ERROR in X.java (at line 0) public class X { ^ Internal compiler error java.lang.ArrayIndexOutOfBoundsException: 1 at org.eclipse.jdt.internal.compiler.lookup.MethodBinding.collectMissingTypes(MethodBinding.java:314) at org.eclipse.jdt.internal.compiler.ClassFile.generateMethodInfoAttribute(ClassFile.java:6299) at org.eclipse.jdt.internal.compiler.ClassFile.addProblemMethod(ClassFile.java:949) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.generateCode(AbstractMethodDeclaration.java:173) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:530) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.generateCode(TypeDeclaration.java:581) at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.generateCode(CompilationUnitDeclaration.java:356) at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:755) at org.eclipse.jdt.internal.compiler.ProcessTaskManager.run(ProcessTaskManager.java:137) at java.lang.Thread.run(Thread.java:619) ---------- 2. ERROR in X.java (at line 2) <U,V extends Runnable> void foo(Zork z) {} ^^^^ Zork cannot be resolved to a type ---------- 3. ERROR in X.java (at line 4) foo(null); ^^^ The method foo(Zork) from the type X refers to the missing type Zork ---------- 3 problems (3 errors)
Jerome - ok for 3.4.2 ?
+1 for 3.4.2 since this is a regression and the fix is trivial
Released for 3.4.2.
*** Bug 252288 has been marked as a duplicate of this bug. ***
Verified for 3.5M3 using I20081026-2000 build.
*** Bug 258248 has been marked as a duplicate of this bug. ***
Verified for 3.4.2 using M20090127-1710
Created attachment 129762 [details] Save action on a javascript file gives the same error that I got some time back on Java code (Eclipse Ganymede) I am getting the same error on JS file (with JS auto-save actions enabled and all options checked , like remove local variables etc.) Thought you guys should know about this. Regards Vyas, Anirudh
*** Bug 285845 has been marked as a duplicate of this bug. ***