[FIR] Introduce containsMultipleNonSubsumed to intersection overrides
After this change the IO created for `SimpleColoredComponent::setToolTipText` will be `containsMultipleNonSubsumed == true` while IOs created for classes in `intersectionOverridesIntersection.kt` will have this property set to `false`. ^KT-65972 Fixed
This commit is contained in:
committed by
Space Team
parent
ee20d979cb
commit
341a23d05c
+4
-1
@@ -334,7 +334,10 @@ class FirSignatureEnhancement(
|
||||
this.name = name!!
|
||||
status = firMethod.status
|
||||
symbol = if (isIntersectionOverride) {
|
||||
FirIntersectionOverrideFunctionSymbol(methodId, overriddenMembers.map { it.symbol })
|
||||
FirIntersectionOverrideFunctionSymbol(
|
||||
methodId, overriddenMembers.map { it.symbol },
|
||||
containsMultipleNonSubsumed = (firMethod.symbol as? FirIntersectionCallableSymbol)?.containsMultipleNonSubsumed == true,
|
||||
)
|
||||
} else {
|
||||
FirNamedFunctionSymbol(methodId)
|
||||
}.also { functionSymbol = it }
|
||||
|
||||
@@ -375,7 +375,11 @@ class JavaOverrideChecker internal constructor(
|
||||
extractedOverrides: Collection<MemberWithBaseScope<D>>,
|
||||
dispatchClassSymbol: FirRegularClassSymbol?,
|
||||
): Visibility {
|
||||
val overridesWithoutIntersections = extractedOverrides.flatMap { it.flattenIntersectionsRecursively() }
|
||||
// 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()
|
||||
|
||||
// In Java it's OK to inherit multiple implementations of the same function
|
||||
|
||||
Reference in New Issue
Block a user