Bug 64467 - [1.5] NPE in ReferenceBinding implementsInterface() method
Summary: [1.5] NPE in ReferenceBinding implementsInterface() method
Status: RESOLVED DUPLICATE of bug 62822
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.0   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: JDT-Core-Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-05-27 18:18 EDT by Andrey Loskutov CLA
Modified: 2004-07-01 04:50 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Andrey Loskutov CLA 2004-05-27 18:18:16 EDT
eclipse.buildId=I200405211200 ("official" M9)
java.version=1.4.2_04
java.vendor=Sun Microsystems Inc.
"official" last cheeta5 build from update site.

Internal compiler error is reported while building FindBugs project from cvs,
http://findbugs.sourceforge.net/
repository path is /cvsroot/findbugs,
module findbugs.

FindBugs uses 1.5 JDK features.
The error is reported on first class in edu.umd.cs.findbugs package:
public abstract class AbstractBugReporter implements BugReporter.

Error Mai 27, 2004 23:44:21.369 Problems occurred when invoking code from 
plug-in: "org.eclipse.core.runtime".
java.lang.NullPointerException
at org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.
implementsInterface(ReferenceBinding.java:440)
at org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.
isCompatibleWith(ReferenceBinding.java:504)
at org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.
boundCheck(TypeVariableBinding.java:54)
at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.
internalResolveType(ParameterizedSingleTypeReference.java:117)
at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.
resolveType(ParameterizedSingleTypeReference.java:157)
at org.eclipse.jdt.internal.compiler.lookup.Scope.connectTypeVariables(Scope.
java:134)
at org.eclipse.jdt.internal.compiler.lookup.ClassScope.
connectTypeHierarchy(ClassScope.java:732)
at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.
connectTypeHierarchy(CompilationUnitScope.java:236)
at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.
completeTypeBindings(LookupEnvironment.java:177)
at org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:305)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:319)
at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.
compile(AbstractImageBuilder.java:209)
at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.
compile(AbstractImageBuilder.java:159)
at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.
build(BatchImageBuilder.java:49)
at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildAll(JavaBuilder.java:
212)
at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:135)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:532)
at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:
608)
at org.eclipse.core.runtime.Platform.run(Platform.java:758)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:
148)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:
225)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:
178)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:205)
at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:
608)
at org.eclipse.core.runtime.Platform.run(Platform.java:758)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:
208)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.
java:244)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:273)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:150)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:204)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:66)
Comment 1 Andrey Loskutov CLA 2004-05-27 18:22:14 EDT
Additional info - i use JDK 1.5 build 1.5.0-beta-b32c for Win32
Comment 2 Paul Krause CLA 2004-05-28 06:13:03 EDT
I see the same backtrace on a different project.
Comment 3 Andrey Loskutov CLA 2004-06-30 14:49:07 EDT
Still present on Cheeta 0.0.6, new error log with changed line numbers below:

java.lang.NullPointerException
at org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.
implementsInterface(ReferenceBinding.java:443)
at org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding.
isCompatibleWith(ReferenceBinding.java:507)
at org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.
boundCheck(TypeVariableBinding.java:54)
at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.
internalResolveType(ParameterizedSingleTypeReference.java:144)
at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.
resolveType(ParameterizedSingleTypeReference.java:184)
at org.eclipse.jdt.internal.compiler.lookup.Scope.connectTypeVariables(Scope.
java:144)
at org.eclipse.jdt.internal.compiler.lookup.ClassScope.
connectTypeHierarchyWithoutMembers(ClassScope.java:766)
at org.eclipse.jdt.internal.compiler.lookup.ClassScope.detectCycle(ClassScope.
java:779)
at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.
internalResolveType(ParameterizedSingleTypeReference.java:107)
at org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference.
resolveType(ParameterizedSingleTypeReference.java:184)
at org.eclipse.jdt.internal.compiler.lookup.Scope.connectTypeVariables(Scope.
java:144)
at org.eclipse.jdt.internal.compiler.lookup.ClassScope.
connectTypeHierarchy(ClassScope.java:732)
at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.
connectTypeHierarchy(CompilationUnitScope.java:236)
at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.
completeTypeBindings(LookupEnvironment.java:182)
at org.eclipse.jdt.internal.compiler.Compiler.beginToCompile(Compiler.java:307)
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:321)
at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.
compile(AbstractImageBuilder.java:209)
at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.
compile(AbstractImageBuilder.java:159)
at org.eclipse.jdt.internal.core.builder.BatchImageBuilder.
build(BatchImageBuilder.java:49)
at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildAll(JavaBuilder.java:
212)
at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:135)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:564)
at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:
615)
at org.eclipse.core.runtime.Platform.run(Platform.java:747)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:
157)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:
249)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:
202)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:229)
at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:
615)
at org.eclipse.core.runtime.Platform.run(Platform.java:747)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:
232)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:328)
at org.eclipse.core.internal.resources.Project.build(Project.java:105)
at org.eclipse.jdt.internal.ui.preferences.OptionsConfigurationBlock$3.
run(OptionsConfigurationBlock.java:451)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:66)
Comment 4 Andrey Loskutov CLA 2004-06-30 15:26:12 EDT
Additional info:

It is a problem with return value from 
org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding.superInterfaces() - 
return value for object represents followed source snippet was null:

----
package edu.umd.cs.findbugs.graph;
import java.io.Serializable;
import java.util.Iterator;
import edu.umd.cs.findbugs.graph.GraphVertex;
import edu.umd.cs.findbugs.graph.GraphEdge;
/**
 * Graph interface; defines the operations used to access and manipulate
 * a graph.
 */
public interface Graph
	<
	EdgeType extends GraphEdge<EdgeType, VertexType>,
	VertexType extends GraphVertex<VertexType>
	> extends Serializable {
----

Therefore this code doesn't work as expected:
(starts at line 433 in ReferenceBinding)
// at this time lastPosition is -1
ReferenceBinding[] itsInterfaces = currentType.superInterfaces();
// itsInterfaces is null!!!
if (itsInterfaces != NoSuperInterfaces) {
// lastPosition is incremented here!!!!
	if (++lastPosition == interfacesToVisit.length)
		System.arraycopy(interfacesToVisit, 0, interfacesToVisit = new 
ReferenceBinding[lastPosition * 2][], 0, lastPosition);
			interfacesToVisit[lastPosition] = itsInterfaces;
}
} while (searchHierarchy && (currentType = currentType.superclass()) != null);

// here is lastPosition >= 0!
	for (int i = 0; i <= lastPosition; i++) {
		ReferenceBinding[] interfaces = interfacesToVisit[i];
// and here is NPE, because "interfaces" is null:
		for (int j = 0, length = interfaces.length; j < length; j++) {
Comment 5 Philipe Mulet CLA 2004-07-01 04:50:21 EDT

*** This bug has been marked as a duplicate of 62822 ***