Bug 100147 - [1.5][compiler] NPE when reporting an error on an unsafe type conversion
Summary: [1.5][compiler] NPE when reporting an error on an unsafe type conversion
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.1   Edit
Hardware: PC All
: P3 normal (vote)
Target Milestone: 3.1 RC3   Edit
Assignee: Philipe Mulet CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-06-15 06:44 EDT by Maxime Daniel CLA
Modified: 2005-06-16 14:41 EDT (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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