You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
MemberResolver misses members inherited via self-referential interface (ResolvedRecursiveType as implemented interface) #132
When an implemented interface of a type is a self-reference (ResolvedRecursiveType), it is returned as-is by getImplementedInterfaces(); and since ResolvedRecursiveType.getImplementedInterfaces() returns an empty list (to avoid infinite loops), MemberResolver silently drops all members inherited through that interface.
Here outerInMid implements MidI<String> via a self-reference (since MidI<String> was still being resolved), so BaseI and Top (and their methods) are not reachable.
(note: on 1.7 / current main, even stand-alone OuterI resolves to 0 member methods)
Expected
Same members as for stand-alone OuterI.
Notes
#128 handled the equivalent case for super classes: ResolvedObjectType.getParentClass() maps a self-referential super class to the type it represents (ResolvedRecursiveType.getActualType(), new in 1.8). Super interfaces would need similar handling: either in getImplementedInterfaces() of ResolvedObjectType / ResolvedInterfaceType, or in MemberResolver (HierarchicType construction) when traversing interfaces. Changing what getImplementedInterfaces() returns would be a (minor) behavioral change, so MemberResolver-side handling may be preferable.
changed the title [-]MemberResolver misses members inherited via self-referential interface (ResolvedRecursiveType as implemented interface)[/-][+]`MemberResolver` misses members inherited via self-referential interface (`ResolvedRecursiveType` as implemented interface)[/+]on Oct 10, 2026
Activity
Fix #132
[-]MemberResolver misses members inherited via self-referential interface (ResolvedRecursiveType as implemented interface)[/-][+]`MemberResolver` misses members inherited via self-referential interface (`ResolvedRecursiveType` as implemented interface)[/+]Fix #132: `MemberResolver` misses members inherited via self-referent…