Community
Participate
Working Groups
Suppose you have: Project A: public class Foo { public interface BaseIf {} public static class Base {} } public class Bar extends Foo.Base implements Foo.BaseIf {} Project B (with dependency on A): public class OtherBar extends Foo.Base implements Foo.BaseIf {} and you open a Type Hierarchy on Foo.BaseIf or Foo.Base, only the Bar is found, not OtherBar.
in fact, a Java Search for Implementors has the same problem
I don't agree with comment 1. Search for implementors of Foo.BaseIf in Workpsace returns correctly 2 matches: one in project A and one in project B. Search returns only one match if you perform it in Project scope which is the expected behavior...
you're right. I tried it with Base only, which is not an interface. I was mislead in believing it could also find subclasses, but the documentation cleary states it finds implementors of interfaces only. my bad, just forget comment #1
Note this is a regression comparing to 3.0
Created attachment 23648 [details] Proposed patch
Given this is a regression, and fix is somewhat trivial, we should address it. Note this is not 1.5 specific. Dirk - can you vote for it ?
Dani - can you vote for it ?
The fix seems rather simple. Can you explain what caused this regression?
+1 for RC3.
RC4 of course.
(In reply to comment #8) > The fix seems rather simple. Can you explain what caused this regression? The regression was introduced on 10/14/2004 (revision 1.72 of NameLookup.java) when working on performance. The method NameLookup#seekTypesInSourcePackage(...) was re-written and '.' was used as the member type separator instead of '$'. This broke the contract of INameEnvironment#findType(...) that says that member types should be found using a '$' name.
+1 for 3.1 RC4 then.
Created attachment 23731 [details] Regression test
Released fix and test
Verified for Build id: I20050624-0010.
Verified.