Generate stub java.lang.Class in IR JvmSymbols instead of scope reading

Before this commit, java.lang.Class was read via JvmBackendContext,
its module descriptor and its package member scope.
However, this works only for old FE with descriptors and
descriptor-based scopes available.
This commit is contained in:
Mikhail Glukhikh
2019-04-29 16:02:56 +03:00
parent 0aee2d0568
commit 892419c08a
@@ -51,6 +51,7 @@ class JvmSymbols(
private val kotlinJvmInternalPackage: IrPackageFragment = createPackage(FqName("kotlin.jvm.internal"))
private val kotlinJvmFunctionsPackage: IrPackageFragment = createPackage(FqName("kotlin.jvm.functions"))
private val javaLangPackage: IrPackageFragment = createPackage(FqName("java.lang"))
private fun createClass(fqName: FqName, classKind: ClassKind = ClassKind.CLASS, block: (IrClass) -> Unit): IrClass =
buildClass {
@@ -60,6 +61,7 @@ class JvmSymbols(
parent = when (fqName.parent().asString()) {
"kotlin.jvm.internal" -> kotlinJvmInternalPackage
"kotlin.jvm.functions" -> kotlinJvmFunctionsPackage
"java.lang" -> javaLangPackage
else -> error("Other packages are not supported yet: $fqName")
}
createImplicitParameterDeclarationWithWrappedDescriptor()
@@ -93,8 +95,7 @@ class JvmSymbols(
override val getContinuation: IrSimpleFunctionSymbol
get() = TODO("not implemented")
val javaLangClass: IrClassSymbol =
context.getTopLevelClass(FqName("java.lang.Class"))
val javaLangClass: IrClassSymbol = createClass(FqName("java.lang.Class")) {}.symbol
val lambdaClass: IrClassSymbol = createClass(FqName("kotlin.jvm.internal.Lambda")) { klass ->
klass.addConstructor().apply {