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)
|
||||
|
||||
ConstAndJvmFieldPropertiesLowering().lower(irFile)
|
||||
ConstAndJvmFieldPropertiesLowering(context).lower(irFile)
|
||||
PropertiesLowering().lower(irFile)
|
||||
AnnotationLowering().runOnFilePostfix(irFile) //should be run before defaults lowering
|
||||
|
||||
|
||||
+7
-6
@@ -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) }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user