Community
Participate
Working Groups
Build ID: I20070209-1006 Steps To Reproduce: 1. compile the following program 2. or comment the first line of the main and uncomment the second line public class EclipseBug3 { <T> EclipseBug3(T t) { } class A { <T> A(T t) { } } public static void main(String[] args) { new <?> EclipseBug3(null); //new EclipseBug3(null).new <?> A(null); } } More information: Using a wildcard as type argument is rejected by the JLS but eclipse compiler doesn't handle this case. A call to a parametrized constructor with a wildcard raises the following exception : Internal compiler error java.lang.NullPointerException at org.eclipse.jdt.internal.compiler.ast.AllocationExpression.analyseCode(AllocationExpression.java:33) at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.analyseCode(MethodDeclaration.java:90) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.internalAnalyseCode(TypeDeclaration.java:668) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.analyseCode(TypeDeclaration.java:253) at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.analyseCode(CompilationUnitDeclaration.java:107) at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:621) at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:391) at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:355) at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.compile(BatchImageBuilder.java:173) at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:292) at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.build(BatchImageBuilder.java:59) at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildAll(JavaBuilder.java:245) at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:175) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:621) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:163) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:194) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:243) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:299) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:331) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:158) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:224) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58) and a call to a parametrized constructor of an inner-class with a wildcard raises this one : Internal compiler error java.lang.NullPointerException at org.eclipse.jdt.internal.compiler.ast.QualifiedAllocationExpression.analyseCode(QualifiedAllocationExpression.java:53) at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.analyseCode(MethodDeclaration.java:90) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.internalAnalyseCode(TypeDeclaration.java:668) at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.analyseCode(TypeDeclaration.java:253) at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.analyseCode(CompilationUnitDeclaration.java:107) at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:621) at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:391) at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:355) at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.compile(BatchImageBuilder.java:173) at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:292) at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.build(BatchImageBuilder.java:59) at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildAll(JavaBuilder.java:245) at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:175) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:621) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:163) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:194) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:243) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:299) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:331) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:158) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:224) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58) Rémi
This is another occurence of a similar problem to bug 172189. I'll fix it the same way.
Created attachment 59141 [details] Proposed fix
Released for 3.3M6. Regression tests added in org.eclipse.jdt.core.tests.compiler.regression.GenericTypeTest#test1102/test1103/test1104
Verified for 3.3 M6 using build I20070320-0010