diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmSymbols.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmSymbols.kt index 6f72debb4e2..0e10d9ac3ee 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmSymbols.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmSymbols.kt @@ -689,12 +689,23 @@ class JvmSymbols( val genericToArray: IrSimpleFunctionSymbol = collectionToArrayClass.functions.single { it.owner.name.asString() == "toArray" && it.owner.valueParameters.size == 2 } + val jvmName: IrClassSymbol = createClass(FqName("kotlin.jvm.JvmName"), ClassKind.ANNOTATION_CLASS) { klass -> + klass.addConstructor().apply { + addValueParameter("name", irBuiltIns.stringType) + } + } + val kClassJava: IrPropertySymbol = irFactory.buildProperty { name = Name.identifier("java") }.apply { - parent = kotlinJvmPackage + parent = createClass(FqName("kotlin.jvm.JvmClassMappingKt")).owner addGetter().apply { + annotations = listOf( + IrConstructorCallImpl.fromSymbolOwner(jvmName.typeWith(), jvmName.constructors.single()).apply { + putValueArgument(0, IrConstImpl.string(UNDEFINED_OFFSET, UNDEFINED_OFFSET, irBuiltIns.stringType, "getJavaClass")) + } + ) addExtensionReceiver(irBuiltIns.kClassClass.starProjectedType) returnType = javaLangClass.starProjectedType } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrConstructorCallImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrConstructorCallImpl.kt index 270a3ebbc5d..ca03b0981c2 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrConstructorCallImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrConstructorCallImpl.kt @@ -88,7 +88,11 @@ class IrConstructorCallImpl( return fromSymbolOwner(startOffset, endOffset, type, constructorSymbol, classTypeParametersCount, origin) } - fun fromSymbolOwner(type: IrType, constructorSymbol: IrConstructorSymbol, origin: IrStatementOrigin? = null) = + fun fromSymbolOwner( + type: IrType, + constructorSymbol: IrConstructorSymbol, + origin: IrStatementOrigin? = null + ): IrConstructorCallImpl = fromSymbolOwner( UNDEFINED_OFFSET, UNDEFINED_OFFSET, type, constructorSymbol, constructorSymbol.owner.parentAsClass.typeParameters.size, origin