diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/PropertyReferenceLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/PropertyReferenceLowering.kt index b5912214e79..5a1743f8158 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/PropertyReferenceLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/PropertyReferenceLowering.kt @@ -231,7 +231,7 @@ internal class PropertyReferenceLowering(val context: JvmBackendContext) : Class val constructor = referenceKind.implSymbol.constructors.single { it.owner.valueParameters.size == 3 } putValueArgument(0, irCall(constructor).apply { putValueArgument(0, buildReflectedContainerReference(expression)) - putValueArgument(1, irString(expression.symbol.descriptor.name.asString())) + putValueArgument(1, irString(expression.referencedName.asString())) putValueArgument(2, computeSignatureString(expression)) }) } @@ -285,7 +285,7 @@ internal class PropertyReferenceLowering(val context: JvmBackendContext) : Class val getName = superClass.functions.single { it.name.asString() == "getName" } val getOwner = superClass.functions.single { it.name.asString() == "getOwner" } val getSignature = superClass.functions.single { it.name.asString() == "getSignature" } - referenceClass.addOverride(getName) { irString(expression.symbol.descriptor.name.asString()) } + referenceClass.addOverride(getName) { irString(expression.referencedName.asString()) } referenceClass.addOverride(getOwner) { buildReflectedContainerReference(expression) } referenceClass.addOverride(getSignature) { computeSignatureString(expression) } } @@ -392,7 +392,7 @@ internal class PropertyReferenceLowering(val context: JvmBackendContext) : Class val callee = expression.symbol.owner as IrDeclaration val owner = buildReflectedContainerReferenceKClass(expression) putValueArgument(index++, kClassToJavaClass(owner, backendContext)) - putValueArgument(index++, irString(expression.symbol.descriptor.name.asString())) + putValueArgument(index++, irString(expression.referencedName.asString())) putValueArgument(index++, computeSignatureString(expression)) putValueArgument(index, irInt(FunctionReferenceLowering.getCallableReferenceTopLevelFlag(callee))) } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCallableReference.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCallableReference.kt index 6a25197a70a..f713271e002 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCallableReference.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrCallableReference.kt @@ -17,8 +17,11 @@ package org.jetbrains.kotlin.ir.expressions import org.jetbrains.kotlin.ir.symbols.* +import org.jetbrains.kotlin.name.Name -interface IrCallableReference : IrMemberAccessExpression +interface IrCallableReference : IrMemberAccessExpression { + val referencedName: Name +} interface IrFunctionReference : IrCallableReference, IrFunctionAccessExpression { val reflectionTarget: IrFunctionSymbol? diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrFunctionReferenceImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrFunctionReferenceImpl.kt index 5f2a7fb82df..38145709de6 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrFunctionReferenceImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrFunctionReferenceImpl.kt @@ -21,6 +21,7 @@ import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.visitors.IrElementVisitor +import org.jetbrains.kotlin.name.Name class IrFunctionReferenceImpl( startOffset: Int, @@ -60,6 +61,9 @@ class IrFunctionReferenceImpl( origin ) + override val referencedName: Name + get() = symbol.owner.name + override fun accept(visitor: IrElementVisitor, data: D): R = visitor.visitFunctionReference(this, data) } diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrLocalDelegatedPropertyReferenceImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrLocalDelegatedPropertyReferenceImpl.kt index d0532c80fa0..c139890a6df 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrLocalDelegatedPropertyReferenceImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrLocalDelegatedPropertyReferenceImpl.kt @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol import org.jetbrains.kotlin.ir.symbols.IrVariableSymbol import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.visitors.IrElementVisitor +import org.jetbrains.kotlin.name.Name class IrLocalDelegatedPropertyReferenceImpl( startOffset: Int, @@ -38,6 +39,9 @@ class IrLocalDelegatedPropertyReferenceImpl( IrNoArgumentsCallableReferenceBase(startOffset, endOffset, type, 0, origin), IrLocalDelegatedPropertyReference { + override val referencedName: Name + get() = symbol.owner.name + override fun accept(visitor: IrElementVisitor, data: D): R = visitor.visitLocalDelegatedPropertyReference(this, data) } \ No newline at end of file diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrPropertyReferenceImpl.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrPropertyReferenceImpl.kt index 069749895db..994677fa4a7 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrPropertyReferenceImpl.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/impl/IrPropertyReferenceImpl.kt @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol import org.jetbrains.kotlin.ir.symbols.impl.IrPropertySymbolImpl import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.visitors.IrElementVisitor +import org.jetbrains.kotlin.name.Name class IrPropertyReferenceImpl( startOffset: Int, @@ -57,6 +58,9 @@ class IrPropertyReferenceImpl( typeArgumentsCount, field, getter, setter, origin ) + override val referencedName: Name + get() = symbol.owner.name + override fun accept(visitor: IrElementVisitor, data: D): R = visitor.visitPropertyReference(this, data) } \ No newline at end of file