[FIR] Fix giant type produced by CST
#KT-65704 Fixed
This commit is contained in:
committed by
Space Team
parent
81c0ee471f
commit
85a1d67d19
+1
-1
@@ -43,7 +43,7 @@ FILE: onlyInputTypesCapturedTypeWithRecursiveBoundsAfter.kt
|
|||||||
private final fun test(node: R|FooEnumMap<*>|): R|kotlin/Unit| {
|
private final fun test(node: R|FooEnumMap<*>|): R|kotlin/Unit| {
|
||||||
R|<local>/node|.R|SubstitutionOverride</FooEnumMap.data: R|java/util/EnumMap<CapturedType(*), kotlin/Any?>|>|.R|kotlin/collections/get|<R|ft<it(kotlin/Enum<*> & I), it(kotlin/Enum<*>? & I?)>|, R|kotlin/Any!|>(Q|MyEnum|.R|/MyEnum.EnumEntry|)
|
R|<local>/node|.R|SubstitutionOverride</FooEnumMap.data: R|java/util/EnumMap<CapturedType(*), kotlin/Any?>|>|.R|kotlin/collections/get|<R|ft<it(kotlin/Enum<*> & I), it(kotlin/Enum<*>? & I?)>|, R|kotlin/Any!|>(Q|MyEnum|.R|/MyEnum.EnumEntry|)
|
||||||
lval map: R|java/util/EnumMap<out it(kotlin/Enum<*> & I), kotlin/Any?>| = R|<local>/node|.R|SubstitutionOverride</FooEnumMap.data: R|java/util/EnumMap<CapturedType(*), kotlin/Any?>|>|
|
lval map: R|java/util/EnumMap<out it(kotlin/Enum<*> & I), kotlin/Any?>| = R|<local>/node|.R|SubstitutionOverride</FooEnumMap.data: R|java/util/EnumMap<CapturedType(*), kotlin/Any?>|>|
|
||||||
R|<local>/map|.R|kotlin/collections/get|<R|ft<it(kotlin/Enum<out ft<it(kotlin/Enum<out ft<it(kotlin/Enum<*> & I), it(kotlin/Enum<*>? & I?)>> & I), it(kotlin/Enum<*>? & I?)>> & I), it(kotlin/Enum<*>? & I?)>|, R|kotlin/Any!|>(Q|MyEnum|.R|/MyEnum.EnumEntry|)
|
R|<local>/map|.R|kotlin/collections/get|<R|ft<it(kotlin/Enum<*> & I), it(kotlin/Enum<*>? & I?)>|, R|kotlin/Any!|>(Q|MyEnum|.R|/MyEnum.EnumEntry|)
|
||||||
}
|
}
|
||||||
public open class Foo2<P : R|I|> : R|kotlin/Any| {
|
public open class Foo2<P : R|I|> : R|kotlin/Any| {
|
||||||
public constructor<P : R|I|>(data: R|kotlin/collections/Map<P, kotlin/Any?>|): R|Foo2<P>| {
|
public constructor<P : R|I|>(data: R|kotlin/collections/Map<P, kotlin/Any?>|): R|Foo2<P>| {
|
||||||
|
|||||||
+2
-2
@@ -400,8 +400,8 @@ object NewCommonSuperTypeCalculator {
|
|||||||
if (parameter.getVariance() == TypeVariance.IN)
|
if (parameter.getVariance() == TypeVariance.IN)
|
||||||
return false // arguments for contravariant parameters are intersected, recursion should not be possible
|
return false // arguments for contravariant parameters are intersected, recursion should not be possible
|
||||||
|
|
||||||
val originalTypesSet = originalTypesForCst.toSet()
|
val originalTypesSet = originalTypesForCst.mapTo(mutableSetOf()) { it.lowerBoundIfFlexible().originalIfDefinitelyNotNullable() }
|
||||||
val typeArgumentsTypeSet = typeArgumentsForSuperConstructorParameter.map { it.getType().lowerBoundIfFlexible().originalIfDefinitelyNotNullable() }.toSet()
|
val typeArgumentsTypeSet = typeArgumentsForSuperConstructorParameter.mapTo(mutableSetOf()) { it.getType().lowerBoundIfFlexible().originalIfDefinitelyNotNullable() }
|
||||||
|
|
||||||
if (originalTypesSet.size != typeArgumentsTypeSet.size)
|
if (originalTypesSet.size != typeArgumentsTypeSet.size)
|
||||||
return false
|
return false
|
||||||
|
|||||||
Reference in New Issue
Block a user