[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:
@@ -429,7 +429,10 @@ class Fir2IrClassifierStorage(
|
|||||||
symbolTable.referenceClassIfAny(signature)?.let { irClassSymbol ->
|
symbolTable.referenceClassIfAny(signature)?.let { irClassSymbol ->
|
||||||
val irClass = irClassSymbol.owner
|
val irClass = irClassSymbol.owner
|
||||||
classCache[firClass as FirRegularClass] = irClass
|
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)
|
declarationStorage.preCacheBuiltinClassMembers(firClass, irClass)
|
||||||
return irClassSymbol
|
return irClassSymbol
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user