Bug 100147

Summary: [1.5][compiler] NPE when reporting an error on an unsafe type conversion
Product: [Eclipse Project] JDT Reporter: Maxime Daniel <maxime_daniel>
Component: CoreAssignee: Philipe Mulet <philippe_mulet>
Status: VERIFIED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: daniel_megert, jeroen
Version: 3.1   
Target Milestone: 3.1 RC3   
Hardware: PC   
OS: All   
Whiteboard:

Description Maxime Daniel CLA 2005-06-15 06:44:31 EDT
Build id: N20050615-0010

Stack trace:
java.lang.NullPointerException
	at org.eclipse.jdt.internal.compiler.lookup.RawTypeBinding.readableName
(RawTypeBinding.java:154)
	at org.eclipse.jdt.internal.compiler.lookup.RawTypeBinding.readableName
(RawTypeBinding.java:154)
	at 
org.eclipse.jdt.internal.compiler.problem.ProblemReporter.unsafeTypeConversion
(ProblemReporter.java:5390)
	at org.eclipse.jdt.internal.compiler.ast.LocalDeclaration.resolve
(LocalDeclaration.java:208)
	at 
org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatement
s(AbstractMethodDeclaration.java:418)
	at 
org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.resolveStatements
(MethodDeclaration.java:171)
	at 
org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve
(AbstractMethodDeclaration.java:396)
	at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve
(TypeDeclaration.java:1063)
	at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve
(TypeDeclaration.java:1112)
	at 
org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve
(CompilationUnitDeclaration.java:305)
	at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:504)
	at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:329)
	at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile
(AbstractImageBuilder.java:240)
	at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile
(AbstractImageBuilder.java:213)
	at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.build
(BatchImageBuilder.java:50)
	at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildAll
(JavaBuilder.java:213)
	at org.eclipse.jdt.internal.core.builder.JavaBuilder.build
(JavaBuilder.java:136)
	at org.eclipse.core.internal.events.BuildManager$2.run
(BuildManager.java:593)
	at org.eclipse.core.internal.runtime.InternalPlatform.run
(InternalPlatform.java:1044)
	at org.eclipse.core.runtime.Platform.run(Platform.java:783)
	at org.eclipse.core.internal.events.BuildManager.basicBuild
(BuildManager.java:168)
	at org.eclipse.core.internal.events.BuildManager.basicBuild
(BuildManager.java:202)
	at org.eclipse.core.internal.events.BuildManager$1.run
(BuildManager.java:231)
	at org.eclipse.core.internal.runtime.InternalPlatform.run
(InternalPlatform.java:1044)
	at org.eclipse.core.runtime.Platform.run(Platform.java:783)
	at org.eclipse.core.internal.events.BuildManager.basicBuild
(BuildManager.java:234)
	at org.eclipse.core.internal.events.BuildManager.basicBuildLoop
(BuildManager.java:253)
	at org.eclipse.core.internal.events.BuildManager.build
(BuildManager.java:282)
	at org.eclipse.core.internal.resources.Workspace.build
(Workspace.java:211)
	at org.eclipse.ui.actions.GlobalBuildAction$1.run
(GlobalBuildAction.java:182)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:76)

The source is taken from the test case submitted with 
https://bugs.eclipse.org/bugs/show_bug.cgi?id=100128.

Still need to reduce the test case to a smaller one.
Comment 1 Philipe Mulet CLA 2005-06-15 06:57:16 EDT
+1 for RC3.

Dani - pls cast your vote. Compiler is dying trying to report an error. The
offending testcase is real production code.
Comment 2 Dani Megert CLA 2005-06-15 06:59:48 EDT
+1 for 3.1 RC3.
Comment 3 Philipe Mulet CLA 2005-06-15 11:18:46 EDT
Reduced testcase:
public class X<K, V> {
	static class EntryMap<K, V> {
		class Entry {
		}
	}
	EntryMap.Entry internalGet(Object key) {
	}
	void foo(Object key) {
		EntryMap<K,V>.Entry entry = internalGet(key);
	}
}
Comment 4 Philipe Mulet CLA 2005-06-15 11:38:45 EDT
Problem lies in QualifiedTypeReference, where we misconstruct the proper type
binding (leaving the member raw type with no enclosing type).

Added GenericTypeTest#test757#test758.
Fixed
Comment 5 Philipe Mulet CLA 2005-06-15 13:07:43 EDT
Fixd
Comment 6 Olivier Thomann CLA 2005-06-16 14:41:19 EDT
Verified using N20050616-0010 + JDT/Core HEAD