FIR2IR: add fake override generation for built-in classes

This commit is contained in:
Mikhail Glukhikh
2021-10-26 11:05:26 +03:00
committed by teamcity
parent 0622a47493
commit d4cdf874be
2 changed files with 10 additions and 1 deletions
@@ -34,6 +34,7 @@ import org.jetbrains.kotlin.fir.types.isSuspendFunctionType
import org.jetbrains.kotlin.fir.resolve.isKFunctionInvoke
import org.jetbrains.kotlin.fir.resolve.providers.firProvider
import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope
import org.jetbrains.kotlin.fir.symbols.*
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.*
@@ -163,6 +164,14 @@ class Fir2IrDeclarationStorage(
else -> {}
}
}
val scope = firClass.unsubstitutedScope(session, scopeSession, withForcedTypeCalculator = false)
scope.getCallableNames().forEach { callableName ->
buildList {
fakeOverrideGenerator.generateFakeOverridesForName(
irClass, scope, callableName, firClass, this, realDeclarationSymbols = emptySet()
)
}.also(fakeOverrideGenerator::bindOverriddenSymbols)
}
}
fun registerFile(firFile: FirFile, irFile: IrFile) {
@@ -101,7 +101,7 @@ class FakeOverrideGenerator(
)
}
private fun generateFakeOverridesForName(
internal fun generateFakeOverridesForName(
irClass: IrClass,
useSiteMemberScope: FirTypeScope,
name: Name,