JVM_IR. Reference fields
This commit is contained in:
committed by
romanart
parent
92ce50b22c
commit
e6b8ade096
@@ -34,7 +34,7 @@ class JvmLower(val context: JvmBackendContext) {
|
|||||||
|
|
||||||
LateinitLowering(context, true).lower(irFile)
|
LateinitLowering(context, true).lower(irFile)
|
||||||
|
|
||||||
ConstAndJvmFieldPropertiesLowering().lower(irFile)
|
ConstAndJvmFieldPropertiesLowering(context).lower(irFile)
|
||||||
PropertiesLowering().lower(irFile)
|
PropertiesLowering().lower(irFile)
|
||||||
AnnotationLowering().runOnFilePostfix(irFile) //should be run before defaults lowering
|
AnnotationLowering().runOnFilePostfix(irFile) //should be run before defaults lowering
|
||||||
|
|
||||||
|
|||||||
+7
-6
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.backend.jvm.lower
|
package org.jetbrains.kotlin.backend.jvm.lower
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.FileLoweringPass
|
import org.jetbrains.kotlin.backend.common.FileLoweringPass
|
||||||
|
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
|
||||||
import org.jetbrains.kotlin.codegen.JvmCodegenUtil
|
import org.jetbrains.kotlin.codegen.JvmCodegenUtil
|
||||||
import org.jetbrains.kotlin.descriptors.PropertyAccessorDescriptor
|
import org.jetbrains.kotlin.descriptors.PropertyAccessorDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.PropertyGetterDescriptor
|
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.ir.visitors.transformChildrenVoid
|
||||||
import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor
|
import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor
|
||||||
|
|
||||||
class ConstAndJvmFieldPropertiesLowering : IrElementTransformerVoid(), FileLoweringPass {
|
class ConstAndJvmFieldPropertiesLowering(val context: JvmBackendContext) : IrElementTransformerVoid(), FileLoweringPass {
|
||||||
override fun lower(irFile: IrFile) {
|
override fun lower(irFile: IrFile) {
|
||||||
irFile.transformChildrenVoid(this)
|
irFile.transformChildrenVoid(this)
|
||||||
}
|
}
|
||||||
@@ -55,12 +56,12 @@ class ConstAndJvmFieldPropertiesLowering : IrElementTransformerVoid(), FileLower
|
|||||||
return IrSetFieldImpl(
|
return IrSetFieldImpl(
|
||||||
expression.startOffset,
|
expression.startOffset,
|
||||||
expression.endOffset,
|
expression.endOffset,
|
||||||
descriptor.correspondingProperty,
|
context.ir.symbols.externalSymbolTable.referenceField(descriptor.correspondingProperty),
|
||||||
expression.dispatchReceiver,
|
expression.dispatchReceiver,
|
||||||
expression.getValueArgument(descriptor.valueParameters.lastIndex)!!,
|
expression.getValueArgument(descriptor.valueParameters.lastIndex)!!,
|
||||||
expression.type,
|
expression.type,
|
||||||
expression.origin,
|
expression.origin,
|
||||||
expression.superQualifier
|
expression.superQualifier?.let { context.ir.symbols.externalSymbolTable.referenceClass(it) }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -68,11 +69,11 @@ class ConstAndJvmFieldPropertiesLowering : IrElementTransformerVoid(), FileLower
|
|||||||
return IrGetFieldImpl(
|
return IrGetFieldImpl(
|
||||||
expression.startOffset,
|
expression.startOffset,
|
||||||
expression.endOffset,
|
expression.endOffset,
|
||||||
descriptor.correspondingProperty,
|
context.ir.symbols.externalSymbolTable.referenceField(descriptor.correspondingProperty),
|
||||||
expression.dispatchReceiver,
|
|
||||||
expression.type,
|
expression.type,
|
||||||
|
expression.dispatchReceiver,
|
||||||
expression.origin,
|
expression.origin,
|
||||||
expression.superQualifier
|
expression.superQualifier?.let { context.ir.symbols.externalSymbolTable.referenceClass(it) }
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user