[JVM_IR] Don't generate reflective access to getter/setter without property
This is the case when we have Java class in hierarchy. In this case, we want to generate reflective access to the original Java method. #KT-63642 Fixed
This commit is contained in:
+5
-3
@@ -106,9 +106,11 @@ internal class ReflectiveAccessLowering(
|
||||
if (callee.isAccessible(withSuper = superQualifier != null)) {
|
||||
return expression
|
||||
}
|
||||
return if (expression.origin == IrStatementOrigin.GET_PROPERTY) {
|
||||
|
||||
val isAccessToProperty = expression.symbol.owner.correspondingPropertySymbol != null
|
||||
return if (isAccessToProperty && expression.origin == IrStatementOrigin.GET_PROPERTY) {
|
||||
generateReflectiveAccessForGetter(expression)
|
||||
} else if (expression.origin?.isAssignmentOperator() == true) {
|
||||
} else if (isAccessToProperty && expression.origin?.isAssignmentOperator() == true) {
|
||||
generateReflectiveAccessForSetter(expression)
|
||||
} else if (expression.dispatchReceiver == null && expression.extensionReceiver == null) {
|
||||
generateReflectiveStaticCall(expression)
|
||||
@@ -325,7 +327,7 @@ internal class ReflectiveAccessLowering(
|
||||
arguments.addAll(call.getValueArguments())
|
||||
|
||||
return generateReflectiveMethodInvocation(
|
||||
call.superQualifierSymbol?.defaultType ?: call.dispatchReceiver?.type ?: call.symbol.owner.parentAsClass.defaultType,
|
||||
call.superQualifierSymbol?.defaultType ?: call.symbol.owner.resolveFakeOverrideOrFail().parentAsClass.defaultType,
|
||||
call.symbol.owner.name.asString(),
|
||||
parameterTypes,
|
||||
call.dispatchReceiver,
|
||||
|
||||
Reference in New Issue
Block a user