[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 }
|
val constructor = referenceKind.implSymbol.constructors.single { it.owner.valueParameters.size == 3 }
|
||||||
putValueArgument(0, irCall(constructor).apply {
|
putValueArgument(0, irCall(constructor).apply {
|
||||||
putValueArgument(0, buildReflectedContainerReference(expression))
|
putValueArgument(0, buildReflectedContainerReference(expression))
|
||||||
putValueArgument(1, irString(expression.symbol.descriptor.name.asString()))
|
putValueArgument(1, irString(expression.referencedName.asString()))
|
||||||
putValueArgument(2, computeSignatureString(expression))
|
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 getName = superClass.functions.single { it.name.asString() == "getName" }
|
||||||
val getOwner = superClass.functions.single { it.name.asString() == "getOwner" }
|
val getOwner = superClass.functions.single { it.name.asString() == "getOwner" }
|
||||||
val getSignature = superClass.functions.single { it.name.asString() == "getSignature" }
|
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(getOwner) { buildReflectedContainerReference(expression) }
|
||||||
referenceClass.addOverride(getSignature) { computeSignatureString(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 callee = expression.symbol.owner as IrDeclaration
|
||||||
val owner = buildReflectedContainerReferenceKClass(expression)
|
val owner = buildReflectedContainerReferenceKClass(expression)
|
||||||
putValueArgument(index++, kClassToJavaClass(owner, backendContext))
|
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++, computeSignatureString(expression))
|
||||||
putValueArgument(index, irInt(FunctionReferenceLowering.getCallableReferenceTopLevelFlag(callee)))
|
putValueArgument(index, irInt(FunctionReferenceLowering.getCallableReferenceTopLevelFlag(callee)))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,8 +17,11 @@
|
|||||||
package org.jetbrains.kotlin.ir.expressions
|
package org.jetbrains.kotlin.ir.expressions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.ir.symbols.*
|
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 {
|
interface IrFunctionReference : IrCallableReference, IrFunctionAccessExpression {
|
||||||
val reflectionTarget: IrFunctionSymbol?
|
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.symbols.IrFunctionSymbol
|
||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
class IrFunctionReferenceImpl(
|
class IrFunctionReferenceImpl(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
@@ -60,6 +61,9 @@ class IrFunctionReferenceImpl(
|
|||||||
origin
|
origin
|
||||||
)
|
)
|
||||||
|
|
||||||
|
override val referencedName: Name
|
||||||
|
get() = symbol.owner.name
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||||
visitor.visitFunctionReference(this, data)
|
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.symbols.IrVariableSymbol
|
||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
class IrLocalDelegatedPropertyReferenceImpl(
|
class IrLocalDelegatedPropertyReferenceImpl(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
@@ -38,6 +39,9 @@ class IrLocalDelegatedPropertyReferenceImpl(
|
|||||||
IrNoArgumentsCallableReferenceBase(startOffset, endOffset, type, 0, origin),
|
IrNoArgumentsCallableReferenceBase(startOffset, endOffset, type, 0, origin),
|
||||||
IrLocalDelegatedPropertyReference {
|
IrLocalDelegatedPropertyReference {
|
||||||
|
|
||||||
|
override val referencedName: Name
|
||||||
|
get() = symbol.owner.name
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||||
visitor.visitLocalDelegatedPropertyReference(this, data)
|
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.symbols.impl.IrPropertySymbolImpl
|
||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
class IrPropertyReferenceImpl(
|
class IrPropertyReferenceImpl(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
@@ -57,6 +58,9 @@ class IrPropertyReferenceImpl(
|
|||||||
typeArgumentsCount, field, getter, setter, origin
|
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 =
|
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R =
|
||||||
visitor.visitPropertyReference(this, data)
|
visitor.visitPropertyReference(this, data)
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user