File tree Expand file tree Collapse file tree 1 file changed +6
-2
lines changed
src/reflect/scala/reflect/internal Expand file tree Collapse file tree 1 file changed +6
-2
lines changed Original file line number Diff line number Diff line change @@ -628,6 +628,9 @@ trait Types
628
628
*/
629
629
def nonPrivateMember (name : Name ): Symbol =
630
630
memberBasedOnName(name, BridgeAndPrivateFlags )
631
+ def hasNonPrivateMember (name : Name ): Boolean = {
632
+ new HasMember (this , name, BridgeAndPrivateFlags , 0L ).apply()
633
+ }
631
634
632
635
def packageObject : Symbol = member(nme.PACKAGE )
633
636
@@ -4225,10 +4228,11 @@ trait Types
4225
4228
else if (member.isOverloaded) member.alternatives exists directlySpecializedBy
4226
4229
else directlySpecializedBy(member)
4227
4230
)
4231
+ val isHasMember = sym.info == WildcardType // OPT avoid full findMember during search for extension methods, e.g pt = `?{ def extension: ? }`.
4228
4232
4229
4233
( (tp.typeSymbol isBottomSubClass sym.owner)
4230
- || specializedBy(tp nonPrivateMember sym.name)
4231
- )
4234
+ || ( if (isHasMember) tp.hasNonPrivateMember(sym.name) else specializedBy(tp nonPrivateMember sym.name) )
4235
+ )
4232
4236
}
4233
4237
4234
4238
/** Does member `symLo` of `tpLo` have a stronger type
You can’t perform that action at this time.
0 commit comments