From e6b8ade0966cb6837c592c60685d18f0c827da52 Mon Sep 17 00:00:00 2001 From: Mikhael Bogdanov Date: Thu, 30 Aug 2018 15:06:09 +0200 Subject: [PATCH] JVM_IR. Reference fields --- .../org/jetbrains/kotlin/backend/jvm/JvmLower.kt | 2 +- .../jvm/lower/ConstAndJvmFieldPropertiesLowering.kt | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt index badda28fab2..086e77a15a3 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmLower.kt @@ -34,7 +34,7 @@ class JvmLower(val context: JvmBackendContext) { LateinitLowering(context, true).lower(irFile) - ConstAndJvmFieldPropertiesLowering().lower(irFile) + ConstAndJvmFieldPropertiesLowering(context).lower(irFile) PropertiesLowering().lower(irFile) AnnotationLowering().runOnFilePostfix(irFile) //should be run before defaults lowering 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 13dbe37331b..cedf8aa5105 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 @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.backend.jvm.lower import org.jetbrains.kotlin.backend.common.FileLoweringPass +import org.jetbrains.kotlin.backend.jvm.JvmBackendContext import org.jetbrains.kotlin.codegen.JvmCodegenUtil import org.jetbrains.kotlin.descriptors.PropertyAccessorDescriptor import org.jetbrains.kotlin.descriptors.PropertyGetterDescriptor @@ -20,7 +21,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor -class ConstAndJvmFieldPropertiesLowering : IrElementTransformerVoid(), FileLoweringPass { +class ConstAndJvmFieldPropertiesLowering(val context: JvmBackendContext) : IrElementTransformerVoid(), FileLoweringPass { override fun lower(irFile: IrFile) { irFile.transformChildrenVoid(this) } @@ -55,12 +56,12 @@ class ConstAndJvmFieldPropertiesLowering : IrElementTransformerVoid(), FileLower return IrSetFieldImpl( expression.startOffset, expression.endOffset, - descriptor.correspondingProperty, + context.ir.symbols.externalSymbolTable.referenceField(descriptor.correspondingProperty), expression.dispatchReceiver, expression.getValueArgument(descriptor.valueParameters.lastIndex)!!, expression.type, expression.origin, - expression.superQualifier + expression.superQualifier?.let { context.ir.symbols.externalSymbolTable.referenceClass(it) } ) } @@ -68,11 +69,11 @@ class ConstAndJvmFieldPropertiesLowering : IrElementTransformerVoid(), FileLower return IrGetFieldImpl( expression.startOffset, expression.endOffset, - descriptor.correspondingProperty, - expression.dispatchReceiver, + context.ir.symbols.externalSymbolTable.referenceField(descriptor.correspondingProperty), expression.type, + expression.dispatchReceiver, expression.origin, - expression.superQualifier + expression.superQualifier?.let { context.ir.symbols.externalSymbolTable.referenceClass(it) } ) } }