[FIR] Reuse getNonSubsumedNonPhantomOverriddenSymbols
Just a small refactoring to avoid duplicating comments.
This commit is contained in:
committed by
Space Team
parent
22fc90e5a1
commit
3b2bc598b5
@@ -29,7 +29,6 @@ import org.jetbrains.kotlin.fir.scopes.MemberWithBaseScope
|
||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.FirAbstractOverrideChecker
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.chooseIntersectionVisibilityOrNull
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.filterOutDuplicates
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.isAbstract
|
||||
import org.jetbrains.kotlin.fir.scopes.jvm.computeJvmDescriptorRepresentation
|
||||
import org.jetbrains.kotlin.fir.scopes.processOverriddenFunctions
|
||||
@@ -375,12 +374,7 @@ class JavaOverrideChecker internal constructor(
|
||||
extractedOverrides: Collection<MemberWithBaseScope<D>>,
|
||||
dispatchClassSymbol: FirRegularClassSymbol?,
|
||||
): Visibility {
|
||||
// It's crucial that we only unwrap phantom intersection overrides.
|
||||
// See comments in the following tests for explanation:
|
||||
// - intersectionWithMultipleDefaultsInJavaOverriddenByIntersectionInKotlin.kt
|
||||
// - intersectionOverridesIntersection.kt
|
||||
val overridesWithoutIntersections = extractedOverrides.flatMap { it.flattenPhantomIntersectionsRecursively() }
|
||||
val nonSubsumed = overridesWithoutIntersections.nonSubsumed().filterOutDuplicates()
|
||||
val nonSubsumed = extractedOverrides.getNonSubsumedNonPhantomOverriddenSymbols()
|
||||
|
||||
// In Java it's OK to inherit multiple implementations of the same function
|
||||
// from the supertypes as long as there's an implementation from a class.
|
||||
|
||||
@@ -15,7 +15,6 @@ import org.jetbrains.kotlin.fir.scopes.*
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||
import org.jetbrains.kotlin.fir.unwrapSubstitutionOverrides
|
||||
import org.jetbrains.kotlin.name.StandardClassIds
|
||||
|
||||
fun filterOutOverriddenFunctions(extractedOverridden: Collection<MemberWithBaseScope<FirNamedFunctionSymbol>>): Collection<MemberWithBaseScope<FirNamedFunctionSymbol>> {
|
||||
@@ -92,11 +91,6 @@ val MemberWithBaseScope<FirCallableSymbol<*>>.isAbstract: Boolean
|
||||
return member.rawStatus.modality == Modality.ABSTRACT
|
||||
}
|
||||
|
||||
fun <D : FirCallableSymbol<*>> List<MemberWithBaseScope<D>>.filterOutDuplicates(): List<MemberWithBaseScope<D>> {
|
||||
val uniqueSymbols = mutableSetOf<FirCallableSymbol<*>>()
|
||||
return filter { uniqueSymbols.add(it.member.fir.unwrapSubstitutionOverrides().symbol) }
|
||||
}
|
||||
|
||||
fun <D : FirCallableSymbol<*>> findMaxVisibilityOrNull(
|
||||
extractedOverrides: Collection<MemberWithBaseScope<D>>
|
||||
): Visibility? {
|
||||
|
||||
+1
-6
@@ -166,12 +166,7 @@ class FirStandardOverrideChecker(private val session: FirSession) : FirAbstractO
|
||||
extractedOverrides: Collection<MemberWithBaseScope<D>>,
|
||||
dispatchClassSymbol: FirRegularClassSymbol?,
|
||||
): Visibility {
|
||||
// It's crucial that we only unwrap phantom intersection overrides.
|
||||
// See comments in the following tests for explanation:
|
||||
// - intersectionWithMultipleDefaultsInJavaOverriddenByIntersectionInKotlin.kt
|
||||
// - intersectionOverridesIntersection.kt
|
||||
val overridesWithoutIntersections = extractedOverrides.flatMap { it.flattenPhantomIntersectionsRecursively() }
|
||||
val nonSubsumed = overridesWithoutIntersections.nonSubsumed().filterOutDuplicates()
|
||||
val nonSubsumed = extractedOverrides.getNonSubsumedNonPhantomOverriddenSymbols()
|
||||
return chooseIntersectionVisibilityOrNull(nonSubsumed) ?: Visibilities.Unknown
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user