Community
Participate
Working Groups
Build ID: M20080911-1700 consider these classes: p1/C1.java: package p1; public class C1 {} p1/C1/C2.java: package p1.C1; // this package collides with a type public class C2 { C1 f; // <- select here } Select reference "C1" in C2 and wait for hover. Instead an NPE is logged to the error view: java.lang.NullPointerException at org.eclipse.jdt.internal.codeassist.impl.Engine.initializeImportCaches(Engine.java:103) at org.eclipse.jdt.internal.codeassist.impl.Engine.mustQualifyType(Engine.java:141) at org.eclipse.jdt.internal.codeassist.SelectionEngine.acceptType(SelectionEngine.java:158) at org.eclipse.jdt.internal.core.SearchableEnvironment$4.acceptType(SearchableEnvironment.java:371) at org.eclipse.jdt.internal.core.search.BasicSearchEngine$2.acceptIndexMatch(BasicSearchEngine.java:779) at org.eclipse.jdt.internal.core.search.matching.InternalSearchPattern.acceptMatch(InternalSearchPattern.java:47) at org.eclipse.jdt.internal.core.search.matching.InternalSearchPattern.findIndexMatches(InternalSearchPattern.java:88) at org.eclipse.jdt.internal.core.search.matching.MatchLocator.findIndexMatches(MatchLocator.java:269) at org.eclipse.jdt.internal.core.search.PatternSearchJob.search(PatternSearchJob.java:97) at org.eclipse.jdt.internal.core.search.PatternSearchJob.execute(PatternSearchJob.java:63) at org.eclipse.jdt.internal.core.search.processing.JobManager.performConcurrentJob(JobManager.java:276) at org.eclipse.jdt.internal.core.search.BasicSearchEngine.searchAllTypeNames(BasicSearchEngine.java:790) at org.eclipse.jdt.internal.core.SearchableEnvironment.findTypes(SearchableEnvironment.java:377) at org.eclipse.jdt.internal.codeassist.SelectionEngine.select(SelectionEngine.java:719) at org.eclipse.jdt.internal.core.Openable.codeSelect(Openable.java:161) at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:363) at org.eclipse.jdt.internal.core.CompilationUnit.codeSelect(CompilationUnit.java:357) at org.eclipse.jdt.internal.ui.text.java.hover.AbstractJavaEditorTextHover.getJavaElementsAt(AbstractJavaEditorTextHover.java:116) at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.internalGetHoverInfo(JavadocHover.java:498) at org.eclipse.jdt.internal.ui.text.java.hover.JavadocHover.getHoverInfo2(JavadocHover.java:494) at org.eclipse.jdt.internal.ui.text.java.hover.BestMatchHover.getHoverInfo2(BestMatchHover.java:129) at org.eclipse.jdt.internal.ui.text.java.hover.JavaEditorTextHoverProxy.getHoverInfo2(JavaEditorTextHoverProxy.java:82) at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:166) The null is in this.unitScope.fPackage At that point the desired package name is available as this.unitScope.referenceContext.currentPackage.tokens but if no package declaration is present, this will obviously NPE, too.
If you want to see more delete the package declaration in C2: java.lang.NullPointerException at org.eclipse.jdt.internal.compiler.problem.ProblemReporter.packageCollidesWithType(ProblemReporter.java:5414) at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.buildTypeBindings(CompilationUnitScope.java:87) at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.buildTypeBindings(LookupEnvironment.java:147) (this NPE is actually somewhat obtrusive ..) The same problem would also occur (I guess) if mustSpecifyPackage is reported. I wasn't, however, able to easily trigger that error. (Is it actually raised?)
The bug descibed in comment 1 is not the same as bug described in comment 0. I filed a new bug report for problem 2 (bug 251690).
Created attachment 115805 [details] Proposed fix
Released for 3.5M3 Tests added ResolveTests2#testBug249027a() -> testBug249027b()
Verified for 3.5M3 using I20081026-2000