diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/ConstAndJvmFieldPropertiesLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/ConstAndJvmFieldPropertiesLowering.kt index e8689db0a22..572ed910db9 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/ConstAndJvmFieldPropertiesLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/ConstAndJvmFieldPropertiesLowering.kt @@ -10,7 +10,6 @@ import org.jetbrains.kotlin.backend.common.FileLoweringPass import org.jetbrains.kotlin.backend.common.lower.createIrBuilder import org.jetbrains.kotlin.backend.common.lower.irBlock import org.jetbrains.kotlin.backend.common.makePhase -import org.jetbrains.kotlin.codegen.JvmCodegenUtil import org.jetbrains.kotlin.ir.IrStatement import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.* @@ -20,7 +19,6 @@ import org.jetbrains.kotlin.ir.util.hasAnnotation import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid import org.jetbrains.kotlin.load.java.JvmAbi.JVM_FIELD_ANNOTATION_FQ_NAME -import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor class ConstAndJvmFieldPropertiesLowering(val context: CommonBackendContext) : IrElementTransformerVoid(), FileLoweringPass { override fun lower(irFile: IrFile) { @@ -28,7 +26,7 @@ class ConstAndJvmFieldPropertiesLowering(val context: CommonBackendContext) : Ir } override fun visitProperty(declaration: IrProperty): IrStatement { - if (JvmCodegenUtil.isConstOrHasJvmFieldAnnotation(declaration.descriptor)) { + if (declaration.isConst || declaration.backingField?.hasAnnotation(JVM_FIELD_ANNOTATION_FQ_NAME) == true) { /*Safe or need copy?*/ declaration.getter = null declaration.setter = null @@ -51,9 +49,6 @@ class ConstAndJvmFieldPropertiesLowering(val context: CommonBackendContext) : Ir assert(expression is IrSetterCallImpl) substituteSetter(irProperty, expression) } - } else if (irProperty.descriptor is SyntheticJavaPropertyDescriptor) { - expression.dispatchReceiver = expression.extensionReceiver - expression.extensionReceiver = null } return super.visitCall(expression) } @@ -71,7 +66,7 @@ class ConstAndJvmFieldPropertiesLowering(val context: CommonBackendContext) : Ir expression.origin, expression.superQualifierSymbol ) - return buildSubstitution(backingField.isStaticField(), setExpr, receiver) + return buildSubstitution(backingField.isStatic, setExpr, receiver) } private fun substituteGetter(irProperty: IrProperty, expression: IrCall): IrExpression { @@ -86,7 +81,7 @@ class ConstAndJvmFieldPropertiesLowering(val context: CommonBackendContext) : Ir expression.origin, expression.superQualifierSymbol ) - return buildSubstitution(backingField.isStaticField(), getExpr, receiver) + return buildSubstitution(backingField.isStatic, getExpr, receiver) } private fun buildSubstitution(needBlock: Boolean, setOrGetExpr: IrFieldAccessExpression, receiver: IrExpression?): IrExpression { @@ -112,6 +107,3 @@ class ConstAndJvmFieldPropertiesLowering(val context: CommonBackendContext) : Ir } } } - -// Should probably be an utility function with a more direct implementation. -private fun IrField.isStaticField() = (descriptor.dispatchReceiverParameter == null) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrField.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrField.kt index 86ff54d5524..b5f770b9c35 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrField.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/IrField.kt @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.ir.declarations import org.jetbrains.kotlin.descriptors.PropertyDescriptor -import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.ir.expressions.IrExpressionBody import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol import org.jetbrains.kotlin.ir.types.IrType