[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.
This commit is contained in:
Mikhail Glukhikh
2020-07-03 18:07:24 +03:00
parent d2f5fbdd08
commit 521901f09a
@@ -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<FirTypeParameter>().zip(irClass.typeParameters)
for ((firTypeParameter, irTypeParameter) in mappedTypeParameters) {
typeParameterCache[firTypeParameter] = irTypeParameter
}
declarationStorage.preCacheBuiltinClassMembers(firClass, irClass)
return irClassSymbol
}