[IR] Extract IrCallableReference.referencedName
This commit is contained in:
+3
-3
@@ -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)))
|
||||
}
|
||||
|
||||
@@ -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?
|
||||
|
||||
+4
@@ -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 <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitFunctionReference(this, data)
|
||||
}
|
||||
|
||||
+4
@@ -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 <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitLocalDelegatedPropertyReference(this, data)
|
||||
}
|
||||
+4
@@ -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 <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||
visitor.visitPropertyReference(this, data)
|
||||
}
|
||||
Reference in New Issue
Block a user