[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:
Nikolay Lunyak
2024-02-21 14:49:42 +02:00
committed by Space Team
parent ee20d979cb
commit 341a23d05c
9 changed files with 68 additions and 49 deletions
@@ -47,11 +47,19 @@ open class FirNamedFunctionSymbol(callableId: CallableId) : FirFunctionSymbol<Fi
interface FirIntersectionCallableSymbol {
val intersections: Collection<FirCallableSymbol<*>>
/**
* `true` iff a call to `nonSubsumed()` for `intersections` would result into a list with more than one symbol.
* Intuitively, `false` means this intersection is, strictly speaking, redundant, but we still created it
* as an implementation detail.
*/
val containsMultipleNonSubsumed: Boolean
}
class FirIntersectionOverrideFunctionSymbol(
callableId: CallableId,
override val intersections: Collection<FirCallableSymbol<*>>,
override val containsMultipleNonSubsumed: Boolean,
) : FirNamedFunctionSymbol(callableId), FirIntersectionCallableSymbol
class FirConstructorSymbol(callableId: CallableId) : FirFunctionSymbol<FirConstructor>(callableId), ConstructorSymbolMarker {
@@ -72,12 +72,14 @@ open class FirPropertySymbol(callableId: CallableId, ) : FirVariableSymbol<FirPr
class FirIntersectionOverridePropertySymbol(
callableId: CallableId,
override val intersections: Collection<FirCallableSymbol<*>>
override val intersections: Collection<FirCallableSymbol<*>>,
override val containsMultipleNonSubsumed: Boolean,
) : FirPropertySymbol(callableId), FirIntersectionCallableSymbol
class FirIntersectionOverrideFieldSymbol(
callableId: CallableId,
override val intersections: Collection<FirCallableSymbol<*>>
override val intersections: Collection<FirCallableSymbol<*>>,
override val containsMultipleNonSubsumed: Boolean,
) : FirFieldSymbol(callableId), FirIntersectionCallableSymbol
class FirBackingFieldSymbol(callableId: CallableId) : FirVariableSymbol<FirBackingField>(callableId) {