Community
Participate
Working Groups
I am running into an internal compiler error in 3.2 that worked fine in 3.1. It seems to occur when I want to use a method implementation in an abstract superclass but have a method of the same name (but different signature) with default visibility in the concrete class. Here's a simple test case: package package1; import package2.MyList; public class Test { public void reproduce(String sortKey, boolean isAscending) { MyList recList = new MyList(); recList.add(null); } } ... package package2; import java.util.AbstractList; import java.util.List; public class MyList extends AbstractList implements List { void add(Integer i) { } public Object get(int index) { // TODO Auto-generated method stub return null; } public int size() { // TODO Auto-generated method stub return 0; } } The full stack trace: Internal compiler error java.lang.NullPointerException at org.eclipse.jdt.internal.compiler.lookup.Scope.findMethod(Scope.java:1228) at org.eclipse.jdt.internal.compiler.lookup.Scope.getMethod(Scope.java:2013) at org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveType(MessageSend.java:384) at org.eclipse.jdt.internal.compiler.ast.Expression.resolve(Expression.java:880) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatements (AbstractMethodDeclaration.java:432) at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.resolveStatements (MethodDeclaration.java:179) at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve (AbstractMethodDeclaration.java:403) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1047) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1094) at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve (CompilationUnitDeclaration.java:353) at org.eclipse.jdt.internal.compiler.Compiler.process (Compiler.java:594) at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:411) at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:300) at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.compile(BatchImageBuilder.java:217) at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:237) at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.build(BatchImageBuilder.java:56) at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildAll(JavaBuilder.java:249) at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:174) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:603) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:167) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:230) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:233) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:252) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:285) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:145) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:208) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)
Reproduced in latest. Investigating. Added LookupTest#test075
Issue got introduced along with fixes for bug 133737 and bug 129388. Problem comes using #candidateCount instead of #visibleCount for a parameterized method collision check (hence >=1.5 compliance specific). Kent - pls revise the associated patch
Created attachment 46365 [details] Proposed patch
Released for 3.3M1 (HEAD) Released for 3.2.1 (R3_2_maintenance) Fixed
Verified for 3.3 M1 using build I20060807-2000.
Verified for 3.2.1 using build M20060908-1655
Created attachment 117751 [details] Patch for applying this fix to 3.2.0