[FIR2IR] Pre-cache original function type parameters for fake overrides

This commit is contained in:
Jinseong Jeon
2020-04-19 00:23:15 -07:00
committed by Mikhail Glukhikh
parent bc96e42585
commit 39e1635c41
6 changed files with 6 additions and 4 deletions

View File

@@ -18,7 +18,6 @@ import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.declarations.impl.IrClassImpl
import org.jetbrains.kotlin.ir.declarations.impl.IrEnumEntryImpl
import org.jetbrains.kotlin.ir.declarations.impl.IrTypeParameterImpl
import org.jetbrains.kotlin.ir.declarations.impl.IrValueParameterImpl
import org.jetbrains.kotlin.ir.descriptors.*
import org.jetbrains.kotlin.ir.expressions.impl.IrEnumConstructorCallImpl
import org.jetbrains.kotlin.ir.expressions.impl.IrExpressionBodyImpl

View File

@@ -214,6 +214,7 @@ class Fir2IrDeclarationStorage(
if (functionSymbol is FirNamedFunctionSymbol) {
val fakeOverrideSymbol =
FirClassSubstitutionScope.createFakeOverrideFunction(session, functionSymbol.fir, functionSymbol)
classifierStorage.preCacheTypeParameters(functionSymbol.fir)
irClass.declarations += createIrFunction(fakeOverrideSymbol.fir, irClass)
}
}
@@ -221,6 +222,7 @@ class Fir2IrDeclarationStorage(
if (propertySymbol is FirPropertySymbol) {
val fakeOverrideSymbol =
FirClassSubstitutionScope.createFakeOverrideProperty(session, propertySymbol.fir, propertySymbol)
classifierStorage.preCacheTypeParameters(propertySymbol.fir)
irClass.declarations += createIrProperty(fakeOverrideSymbol.fir, irClass)
}
}

View File

@@ -33,7 +33,7 @@ internal class ClassMemberGenerator(
) : Fir2IrComponents by components {
private val fakeOverrideGenerator = FakeOverrideGenerator(
session, components.scopeSession, declarationStorage, conversionScope, fakeOverrideMode
session, components.scopeSession, classifierStorage, declarationStorage, conversionScope, fakeOverrideMode
)
private fun FirTypeRef.toIrType(): IrType = with(typeConverter) { toIrType() }

View File

@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.name.Name
internal class FakeOverrideGenerator(
private val session: FirSession,
private val scopeSession: ScopeSession,
private val classifierStorage: Fir2IrClassifierStorage,
private val declarationStorage: Fir2IrDeclarationStorage,
private val conversionScope: Fir2IrConversionScope,
private val fakeOverrideMode: FakeOverrideMode
@@ -109,6 +110,7 @@ internal class FakeOverrideGenerator(
)
val fakeOverrideFunction = fakeOverrideSymbol.fir
classifierStorage.preCacheTypeParameters(originalFunction)
val irFunction = declarationStorage.createIrFunction(
fakeOverrideFunction, irParent = this,
thisReceiverOwner = declarationStorage.findIrParent(originalFunction) as? IrClass,
@@ -146,6 +148,7 @@ internal class FakeOverrideGenerator(
)
val fakeOverrideProperty = fakeOverrideSymbol.fir
classifierStorage.preCacheTypeParameters(originalProperty)
val irProperty = declarationStorage.createIrProperty(
fakeOverrideProperty, irParent = this,
thisReceiverOwner = declarationStorage.findIrParent(originalProperty) as? IrClass,

View File

@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// WITH_RUNTIME
// WITH_COROUTINES
// COMMON_COROUTINES_TEST

View File

@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// WITH_RUNTIME
// WITH_COROUTINES
// COMMON_COROUTINES_TEST