diff --git a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/FirCorrespondingSupertypesCache.kt b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/FirCorrespondingSupertypesCache.kt index aee30707906..7b138735d3b 100644 --- a/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/FirCorrespondingSupertypesCache.kt +++ b/compiler/fir/providers/src/org/jetbrains/kotlin/fir/types/FirCorrespondingSupertypesCache.kt @@ -56,8 +56,8 @@ class FirCorrespondingSupertypesCache(private val session: FirSession) : FirSess private fun computeSupertypesMap( subtypeLookupTag: ConeClassLikeLookupTag, state: TypeCheckerState - ): Map>? { - val resultingMap = HashMap>() + ): Map>? { + val resultingMap = HashMap>() val subtypeFirClass: FirClassLikeDeclaration = subtypeLookupTag.toSymbol(session)?.fir ?: return null @@ -83,14 +83,15 @@ class FirCorrespondingSupertypesCache(private val session: FirSession) : FirSess private fun computeSupertypePolicyAndPutInMap( supertype: SimpleTypeMarker, - resultingMap: MutableMap>, + resultingMap: MutableMap>, state: TypeCheckerState ): TypeCheckerState.SupertypesPolicy { val supertypeLookupTag = (supertype as ConeClassLikeType).lookupTag val captured = state.typeSystemContext.captureFromArguments(supertype, CaptureStatus.FOR_SUBTYPING) as ConeClassLikeType? ?: supertype - resultingMap[supertypeLookupTag] = listOf(captured) + val list = resultingMap.computeIfAbsent(supertypeLookupTag) { mutableListOf() } + list += captured return when { with(state.typeSystemContext) { captured.argumentsCount() } == 0 -> {