From 521901f09a92d878c597026154db0d8da148c8a3 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 3 Jul 2020 18:07:24 +0300 Subject: [PATCH] [FIR2IR] Cache type parameters for existing IR classes properly Before this commit, we just recreated class header for external IR class found by signature. However, it's not required, because super-types, type parameters, etc. are already initialized. So now we just read type parameters and build cache for them. --- .../jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt index 8f34024f34e..37a0e26ede6 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrClassifierStorage.kt @@ -429,7 +429,10 @@ class Fir2IrClassifierStorage( symbolTable.referenceClassIfAny(signature)?.let { irClassSymbol -> val irClass = irClassSymbol.owner classCache[firClass as FirRegularClass] = irClass - processClassHeader(firClass, irClass) + val mappedTypeParameters = firClass.typeParameters.filterIsInstance().zip(irClass.typeParameters) + for ((firTypeParameter, irTypeParameter) in mappedTypeParameters) { + typeParameterCache[firTypeParameter] = irTypeParameter + } declarationStorage.preCacheBuiltinClassMembers(firClass, irClass) return irClassSymbol }