[FIR] Call distinctBy for containsMultipleNonSubsumed
Otherwise, when analyzing `PsiTypeParameterListOwner` in the related test, we (after flattening and `nonSubsumed()`) get 2 `JvmMember.accept` from the same very java enhancement scope `JvmMember`. ^KT-65972
This commit is contained in:
committed by
Space Team
parent
453b97a2d1
commit
01cff6b5e9
@@ -160,6 +160,12 @@ fun MemberWithBaseScope<FirCallableSymbol<*>>.getNonSubsumedOverriddenSymbols():
|
||||
.map { it.member }
|
||||
}
|
||||
|
||||
fun List<MemberWithBaseScope<FirCallableSymbol<*>>>.getNonSubsumedNonPhantomOverriddenSymbols(): List<MemberWithBaseScope<FirCallableSymbol<*>>> {
|
||||
return flatMap { it.flattenPhantomIntersectionsRecursively() }
|
||||
.nonSubsumed()
|
||||
.distinctBy { it.member.unwrapSubstitutionOverrides<FirCallableSymbol<*>>() }
|
||||
}
|
||||
|
||||
fun FirCallableSymbol<*>.dispatchReceiverScope(session: FirSession, scopeSession: ScopeSession): FirTypeScope {
|
||||
val dispatchReceiverType = requireNotNull(dispatchReceiverType)
|
||||
return dispatchReceiverType.scope(
|
||||
|
||||
+2
-2
@@ -180,8 +180,8 @@ class FirTypeIntersectionScopeContext(
|
||||
overriddenMembers = group,
|
||||
containingScope = null,
|
||||
containsMultipleNonSubsumed = when {
|
||||
forClassUseSiteScope -> group.flatMap { it.flattenPhantomIntersectionsRecursively() }.nonSubsumed().size > 1
|
||||
else -> mostSpecific.flatMap { it.flattenPhantomIntersectionsRecursively() }.nonSubsumed().size > 1
|
||||
forClassUseSiteScope -> group.getNonSubsumedNonPhantomOverriddenSymbols().size > 1
|
||||
else -> mostSpecific.getNonSubsumedNonPhantomOverriddenSymbols().size > 1
|
||||
},
|
||||
)
|
||||
} else {
|
||||
|
||||
-29
@@ -1,29 +0,0 @@
|
||||
// FILE: JvmElement.java
|
||||
public interface JvmElement {
|
||||
default void accept() {}
|
||||
}
|
||||
|
||||
// FILE: JvmMember.java
|
||||
public interface JvmMember extends JvmElement {
|
||||
default void accept() {}
|
||||
}
|
||||
|
||||
// FILE: PsiJvmMember.java
|
||||
// Provides a phantom IO
|
||||
public interface PsiJvmMember extends JvmMember, JvmElement {}
|
||||
|
||||
// FILE: PsiTypeParameterListOwner.java
|
||||
// Must also provide a phantom IO
|
||||
public interface PsiTypeParameterListOwner extends PsiJvmMember, JvmMember {}
|
||||
|
||||
// FILE: JvmClass.java
|
||||
public interface JvmClass extends JvmMember, JvmElement {
|
||||
default void accept() {}
|
||||
}
|
||||
|
||||
// FILE: PsiClass.java
|
||||
public interface PsiClass extends PsiTypeParameterListOwner, JvmClass {}
|
||||
|
||||
// FILE: Main.kt
|
||||
|
||||
<!CANNOT_INFER_VISIBILITY!>class K<!> : PsiClass
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// FILE: JvmElement.java
|
||||
public interface JvmElement {
|
||||
default void accept() {}
|
||||
|
||||
Reference in New Issue
Block a user