IR: use buildField where possible
This commit is contained in:
+11
-18
@@ -14,15 +14,13 @@ import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
|||||||
import org.jetbrains.kotlin.ir.builders.*
|
import org.jetbrains.kotlin.ir.builders.*
|
||||||
import org.jetbrains.kotlin.ir.builders.declarations.buildClass
|
import org.jetbrains.kotlin.ir.builders.declarations.buildClass
|
||||||
import org.jetbrains.kotlin.ir.builders.declarations.buildConstructor
|
import org.jetbrains.kotlin.ir.builders.declarations.buildConstructor
|
||||||
|
import org.jetbrains.kotlin.ir.builders.declarations.buildField
|
||||||
import org.jetbrains.kotlin.ir.builders.declarations.buildFun
|
import org.jetbrains.kotlin.ir.builders.declarations.buildFun
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFieldImpl
|
|
||||||
import org.jetbrains.kotlin.ir.descriptors.WrappedFieldDescriptor
|
|
||||||
import org.jetbrains.kotlin.ir.expressions.*
|
import org.jetbrains.kotlin.ir.expressions.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.IrInstanceInitializerCallImpl
|
import org.jetbrains.kotlin.ir.expressions.impl.IrInstanceInitializerCallImpl
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrFieldSymbolImpl
|
|
||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.ir.types.classifierOrFail
|
import org.jetbrains.kotlin.ir.types.classifierOrFail
|
||||||
import org.jetbrains.kotlin.ir.types.defaultType
|
import org.jetbrains.kotlin.ir.types.defaultType
|
||||||
@@ -618,21 +616,16 @@ abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val co
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun IrClass.addField(name: Name, type: IrType, isMutable: Boolean): IrField {
|
fun IrClass.addField(name: Name, type: IrType, isMutable: Boolean): IrField {
|
||||||
val descriptor = WrappedFieldDescriptor()
|
val klass = this
|
||||||
val symbol = IrFieldSymbolImpl(descriptor)
|
return buildField {
|
||||||
return IrFieldImpl(
|
this.startOffset = klass.startOffset
|
||||||
startOffset,
|
this.endOffset = klass.endOffset
|
||||||
endOffset,
|
this.origin = DECLARATION_ORIGIN_COROUTINE_IMPL
|
||||||
DECLARATION_ORIGIN_COROUTINE_IMPL,
|
this.name = name
|
||||||
symbol,
|
this.type = type
|
||||||
name,
|
this.visibility = Visibilities.PRIVATE
|
||||||
type,
|
this.isFinal = !isMutable
|
||||||
Visibilities.PRIVATE,
|
}.also {
|
||||||
isFinal = !isMutable,
|
|
||||||
isExternal = false,
|
|
||||||
isStatic = false
|
|
||||||
).also {
|
|
||||||
descriptor.bind(it)
|
|
||||||
it.parent = this
|
it.parent = this
|
||||||
addChild(it)
|
addChild(it)
|
||||||
}
|
}
|
||||||
|
|||||||
+13
-20
@@ -18,17 +18,15 @@ import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
|||||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||||
import org.jetbrains.kotlin.ir.builders.Scope
|
import org.jetbrains.kotlin.ir.builders.Scope
|
||||||
import org.jetbrains.kotlin.ir.builders.declarations.buildConstructor
|
import org.jetbrains.kotlin.ir.builders.declarations.buildConstructor
|
||||||
|
import org.jetbrains.kotlin.ir.builders.declarations.buildField
|
||||||
import org.jetbrains.kotlin.ir.builders.declarations.buildFun
|
import org.jetbrains.kotlin.ir.builders.declarations.buildFun
|
||||||
import org.jetbrains.kotlin.ir.builders.declarations.buildValueParameter
|
import org.jetbrains.kotlin.ir.builders.declarations.buildValueParameter
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFieldImpl
|
|
||||||
import org.jetbrains.kotlin.ir.descriptors.WrappedFieldDescriptor
|
|
||||||
import org.jetbrains.kotlin.ir.expressions.*
|
import org.jetbrains.kotlin.ir.expressions.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.*
|
import org.jetbrains.kotlin.ir.expressions.impl.*
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrValueParameterSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrValueParameterSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrValueSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrValueSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrFieldSymbolImpl
|
|
||||||
import org.jetbrains.kotlin.ir.types.*
|
import org.jetbrains.kotlin.ir.types.*
|
||||||
import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl
|
import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl
|
||||||
import org.jetbrains.kotlin.ir.types.impl.IrTypeAbbreviationImpl
|
import org.jetbrains.kotlin.ir.types.impl.IrTypeAbbreviationImpl
|
||||||
@@ -725,25 +723,20 @@ class LocalDeclarationsLowering(
|
|||||||
parent: IrClass,
|
parent: IrClass,
|
||||||
fieldType: IrType,
|
fieldType: IrType,
|
||||||
isCrossinline: Boolean
|
isCrossinline: Boolean
|
||||||
): IrField {
|
): IrField =
|
||||||
val descriptor = WrappedFieldDescriptor()
|
buildField {
|
||||||
val symbol = IrFieldSymbolImpl(descriptor)
|
this.startOffset = startOffset
|
||||||
return IrFieldImpl(
|
this.endOffset = endOffset
|
||||||
startOffset,
|
this.origin =
|
||||||
endOffset,
|
if (isCrossinline) DECLARATION_ORIGIN_FIELD_FOR_CROSSINLINE_CAPTURED_VALUE
|
||||||
if (isCrossinline) DECLARATION_ORIGIN_FIELD_FOR_CROSSINLINE_CAPTURED_VALUE else DECLARATION_ORIGIN_FIELD_FOR_CAPTURED_VALUE,
|
else DECLARATION_ORIGIN_FIELD_FOR_CAPTURED_VALUE
|
||||||
symbol,
|
this.name = name
|
||||||
name,
|
this.type = fieldType
|
||||||
fieldType,
|
this.visibility = visibility
|
||||||
visibility,
|
this.isFinal = true
|
||||||
isFinal = true,
|
}.also {
|
||||||
isExternal = false,
|
|
||||||
isStatic = false
|
|
||||||
).also {
|
|
||||||
descriptor.bind(it)
|
|
||||||
it.parent = parent
|
it.parent = parent
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private fun createFieldsForCapturedValues(localClassContext: LocalClassContext) {
|
private fun createFieldsForCapturedValues(localClassContext: LocalClassContext) {
|
||||||
val classDeclaration = localClassContext.declaration
|
val classDeclaration = localClassContext.declaration
|
||||||
|
|||||||
+3
-3
@@ -72,7 +72,8 @@ fun IrClass.addField(fieldName: Name, fieldType: IrType, fieldVisibility: Visibi
|
|||||||
fun IrClass.addField(fieldName: String, fieldType: IrType, fieldVisibility: Visibility = Visibilities.PRIVATE): IrField =
|
fun IrClass.addField(fieldName: String, fieldType: IrType, fieldVisibility: Visibility = Visibilities.PRIVATE): IrField =
|
||||||
addField(Name.identifier(fieldName), fieldType, fieldVisibility)
|
addField(Name.identifier(fieldName), fieldType, fieldVisibility)
|
||||||
|
|
||||||
fun IrPropertyBuilder.buildProperty(originalDescriptor: PropertyDescriptor? = null): IrProperty {
|
@PublishedApi
|
||||||
|
internal fun IrPropertyBuilder.buildProperty(originalDescriptor: PropertyDescriptor? = null): IrProperty {
|
||||||
val wrappedDescriptor = when (originalDescriptor) {
|
val wrappedDescriptor = when (originalDescriptor) {
|
||||||
is DescriptorWithContainerSource -> WrappedPropertyDescriptorWithContainerSource(originalDescriptor.containerSource)
|
is DescriptorWithContainerSource -> WrappedPropertyDescriptorWithContainerSource(originalDescriptor.containerSource)
|
||||||
else -> WrappedPropertyDescriptor()
|
else -> WrappedPropertyDescriptor()
|
||||||
@@ -81,8 +82,7 @@ fun IrPropertyBuilder.buildProperty(originalDescriptor: PropertyDescriptor? = nu
|
|||||||
startOffset, endOffset, origin,
|
startOffset, endOffset, origin,
|
||||||
IrPropertySymbolImpl(wrappedDescriptor),
|
IrPropertySymbolImpl(wrappedDescriptor),
|
||||||
name, visibility, modality,
|
name, visibility, modality,
|
||||||
isVar = isVar, isConst = isConst, isLateinit = isLateinit, isDelegated = isDelegated, isExpect = isExpect, isExternal = isExternal,
|
isVar, isConst, isLateinit, isDelegated, isExternal, isExpect, isFakeOverride
|
||||||
isFakeOverride = isFakeOverride
|
|
||||||
).also {
|
).also {
|
||||||
wrappedDescriptor.bind(it)
|
wrappedDescriptor.bind(it)
|
||||||
}
|
}
|
||||||
|
|||||||
+13
-23
@@ -13,15 +13,12 @@ import org.jetbrains.kotlin.descriptors.ClassKind
|
|||||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||||
import org.jetbrains.kotlin.descriptors.Visibility
|
import org.jetbrains.kotlin.descriptors.Visibility
|
||||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
|
||||||
import org.jetbrains.kotlin.ir.backend.js.JsMapping
|
import org.jetbrains.kotlin.ir.backend.js.JsMapping
|
||||||
import org.jetbrains.kotlin.ir.backend.js.ir.JsIrBuilder
|
import org.jetbrains.kotlin.ir.backend.js.ir.JsIrBuilder
|
||||||
import org.jetbrains.kotlin.ir.backend.js.utils.Namer
|
import org.jetbrains.kotlin.ir.backend.js.utils.Namer
|
||||||
import org.jetbrains.kotlin.ir.builders.declarations.buildConstructor
|
import org.jetbrains.kotlin.ir.builders.declarations.buildConstructor
|
||||||
|
import org.jetbrains.kotlin.ir.builders.declarations.buildField
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFieldImpl
|
|
||||||
import org.jetbrains.kotlin.ir.descriptors.WrappedFieldDescriptor
|
|
||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrFieldSymbolImpl
|
|
||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.ir.util.defaultType
|
import org.jetbrains.kotlin.ir.util.defaultType
|
||||||
import org.jetbrains.kotlin.ir.util.dump
|
import org.jetbrains.kotlin.ir.util.dump
|
||||||
@@ -51,27 +48,20 @@ class JsDeclarationFactory(mapping: JsMapping) : DeclarationFactory {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createPropertyWithBackingField(name: Name, visibility: Visibility, parent: IrClass, fieldType: IrType, origin: IrDeclarationOrigin): IrField {
|
private fun createPropertyWithBackingField(
|
||||||
val descriptor = WrappedFieldDescriptor()
|
name: Name, visibility: Visibility, parent: IrClass, fieldType: IrType, origin: IrDeclarationOrigin
|
||||||
val symbol = IrFieldSymbolImpl(descriptor)
|
): IrField =
|
||||||
|
buildField {
|
||||||
return IrFieldImpl(
|
this.origin = origin
|
||||||
UNDEFINED_OFFSET,
|
this.name = name
|
||||||
UNDEFINED_OFFSET,
|
this.type = fieldType
|
||||||
origin,
|
this.visibility = visibility
|
||||||
symbol,
|
this.isFinal = true
|
||||||
name,
|
this.isExternal = false
|
||||||
fieldType,
|
this.isStatic = false
|
||||||
visibility,
|
}.also {
|
||||||
isFinal = true,
|
|
||||||
isExternal = false,
|
|
||||||
isStatic = false
|
|
||||||
).also {
|
|
||||||
descriptor.bind(it)
|
|
||||||
it.parent = parent
|
it.parent = parent
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
override fun getInnerClassConstructorWithOuterThisParameter(innerClassConstructor: IrConstructor): IrConstructor {
|
override fun getInnerClassConstructorWithOuterThisParameter(innerClassConstructor: IrConstructor): IrConstructor {
|
||||||
val innerClass = innerClassConstructor.parent as IrClass
|
val innerClass = innerClassConstructor.parent as IrClass
|
||||||
|
|||||||
+15
-19
@@ -15,7 +15,6 @@ import org.jetbrains.kotlin.backend.common.lower.irBlockBody
|
|||||||
import org.jetbrains.kotlin.backend.common.lower.irIfThen
|
import org.jetbrains.kotlin.backend.common.lower.irIfThen
|
||||||
import org.jetbrains.kotlin.backend.common.lower.parents
|
import org.jetbrains.kotlin.backend.common.lower.parents
|
||||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
|
||||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||||
import org.jetbrains.kotlin.ir.backend.js.JsCommonBackendContext
|
import org.jetbrains.kotlin.ir.backend.js.JsCommonBackendContext
|
||||||
import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
|
import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
|
||||||
@@ -25,14 +24,11 @@ import org.jetbrains.kotlin.ir.builders.*
|
|||||||
import org.jetbrains.kotlin.ir.builders.declarations.buildConstructor
|
import org.jetbrains.kotlin.ir.builders.declarations.buildConstructor
|
||||||
import org.jetbrains.kotlin.ir.builders.declarations.buildField
|
import org.jetbrains.kotlin.ir.builders.declarations.buildField
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFieldImpl
|
|
||||||
import org.jetbrains.kotlin.ir.descriptors.WrappedFieldDescriptor
|
|
||||||
import org.jetbrains.kotlin.ir.expressions.*
|
import org.jetbrains.kotlin.ir.expressions.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.IrBlockBodyImpl
|
import org.jetbrains.kotlin.ir.expressions.impl.IrBlockBodyImpl
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
|
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.IrExpressionBodyImpl
|
import org.jetbrains.kotlin.ir.expressions.impl.IrExpressionBodyImpl
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.IrVarargImpl
|
import org.jetbrains.kotlin.ir.expressions.impl.IrVarargImpl
|
||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrFieldSymbolImpl
|
|
||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.ir.types.makeNullable
|
import org.jetbrains.kotlin.ir.types.makeNullable
|
||||||
import org.jetbrains.kotlin.ir.util.*
|
import org.jetbrains.kotlin.ir.util.*
|
||||||
@@ -64,24 +60,24 @@ class EnumUsageLowering(val context: JsIrBackendContext) : BodyLoweringPass {
|
|||||||
return JsIrBuilder.buildCall(intrinsic, context.irBuiltIns.anyType, listOf(irClass.defaultType))
|
return JsIrBuilder.buildCall(intrinsic, context.irBuiltIns.anyType, listOf(irClass.defaultType))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createFieldForEntry(entry: IrEnumEntry, irClass: IrClass): IrField {
|
private fun createFieldForEntry(entry: IrEnumEntry, irClass: IrClass): IrField =
|
||||||
val descriptor = WrappedFieldDescriptor()
|
buildField {
|
||||||
val symbol = IrFieldSymbolImpl(descriptor)
|
startOffset = entry.startOffset
|
||||||
return entry.run {
|
endOffset = entry.endOffset
|
||||||
IrFieldImpl(
|
origin = entry.origin
|
||||||
startOffset, endOffset, origin, symbol, name, irClass.defaultType, Visibilities.PUBLIC,
|
name = entry.name
|
||||||
isFinal = false, isExternal = true, isStatic = true
|
type = irClass.defaultType
|
||||||
).also {
|
isFinal = false
|
||||||
descriptor.bind(it)
|
isExternal = true
|
||||||
it.parent = irClass
|
isStatic = true
|
||||||
|
}.also {
|
||||||
|
it.parent = irClass
|
||||||
|
|
||||||
// TODO need a way to emerge local declarations from BodyLoweringPass
|
// TODO need a way to emerge local declarations from BodyLoweringPass
|
||||||
stageController.unrestrictDeclarationListsAccess {
|
stageController.unrestrictDeclarationListsAccess {
|
||||||
irClass.declarations += it
|
irClass.declarations += it
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private fun lowerEnumEntry(enumEntry: IrEnumEntry, klass: IrClass) =
|
private fun lowerEnumEntry(enumEntry: IrEnumEntry, klass: IrClass) =
|
||||||
enumEntry.getInstanceFun!!.run { JsIrBuilder.buildCall(symbol) }
|
enumEntry.getInstanceFun!!.run { JsIrBuilder.buildCall(symbol) }
|
||||||
|
|||||||
+11
-18
@@ -15,15 +15,13 @@ import org.jetbrains.kotlin.ir.backend.js.lower.CallableReferenceLowering
|
|||||||
import org.jetbrains.kotlin.ir.builders.*
|
import org.jetbrains.kotlin.ir.builders.*
|
||||||
import org.jetbrains.kotlin.ir.builders.declarations.buildClass
|
import org.jetbrains.kotlin.ir.builders.declarations.buildClass
|
||||||
import org.jetbrains.kotlin.ir.builders.declarations.buildConstructor
|
import org.jetbrains.kotlin.ir.builders.declarations.buildConstructor
|
||||||
|
import org.jetbrains.kotlin.ir.builders.declarations.buildField
|
||||||
import org.jetbrains.kotlin.ir.builders.declarations.buildFun
|
import org.jetbrains.kotlin.ir.builders.declarations.buildFun
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFieldImpl
|
|
||||||
import org.jetbrains.kotlin.ir.descriptors.WrappedFieldDescriptor
|
|
||||||
import org.jetbrains.kotlin.ir.expressions.*
|
import org.jetbrains.kotlin.ir.expressions.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.IrInstanceInitializerCallImpl
|
import org.jetbrains.kotlin.ir.expressions.impl.IrInstanceInitializerCallImpl
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrFieldSymbolImpl
|
|
||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.ir.types.classifierOrFail
|
import org.jetbrains.kotlin.ir.types.classifierOrFail
|
||||||
import org.jetbrains.kotlin.ir.types.defaultType
|
import org.jetbrains.kotlin.ir.types.defaultType
|
||||||
@@ -516,21 +514,16 @@ abstract class AbstractSuspendFunctionsLowering<C : CommonBackendContext>(val co
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun IrClass.addField(name: Name, type: IrType, isMutable: Boolean): IrField {
|
fun IrClass.addField(name: Name, type: IrType, isMutable: Boolean): IrField {
|
||||||
val descriptor = WrappedFieldDescriptor()
|
val klass = this
|
||||||
val symbol = IrFieldSymbolImpl(descriptor)
|
return buildField {
|
||||||
return IrFieldImpl(
|
this.startOffset = klass.startOffset
|
||||||
startOffset,
|
this.endOffset = klass.endOffset
|
||||||
endOffset,
|
this.origin = DECLARATION_ORIGIN_COROUTINE_IMPL
|
||||||
DECLARATION_ORIGIN_COROUTINE_IMPL,
|
this.name = name
|
||||||
symbol,
|
this.type = type
|
||||||
name,
|
this.visibility = Visibilities.PRIVATE
|
||||||
type,
|
this.isFinal = !isMutable
|
||||||
Visibilities.PRIVATE,
|
}.also {
|
||||||
isFinal = !isMutable,
|
|
||||||
isExternal = false,
|
|
||||||
isStatic = false
|
|
||||||
).also {
|
|
||||||
descriptor.bind(it)
|
|
||||||
it.parent = this
|
it.parent = this
|
||||||
addChild(it)
|
addChild(it)
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-13
@@ -10,19 +10,17 @@ import org.jetbrains.kotlin.backend.common.FileLoweringPass
|
|||||||
import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase
|
import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase
|
||||||
import org.jetbrains.kotlin.ir.IrElement
|
import org.jetbrains.kotlin.ir.IrElement
|
||||||
import org.jetbrains.kotlin.ir.IrStatement
|
import org.jetbrains.kotlin.ir.IrStatement
|
||||||
|
import org.jetbrains.kotlin.ir.builders.declarations.buildField
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent
|
import org.jetbrains.kotlin.ir.declarations.IrDeclarationParent
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrField
|
import org.jetbrains.kotlin.ir.declarations.IrField
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrFile
|
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFieldImpl
|
|
||||||
import org.jetbrains.kotlin.ir.descriptors.WrappedFieldDescriptor
|
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrGetField
|
import org.jetbrains.kotlin.ir.expressions.IrGetField
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrSetField
|
import org.jetbrains.kotlin.ir.expressions.IrSetField
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.IrGetFieldImpl
|
import org.jetbrains.kotlin.ir.expressions.impl.IrGetFieldImpl
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.IrSetFieldImpl
|
import org.jetbrains.kotlin.ir.expressions.impl.IrSetFieldImpl
|
||||||
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
|
||||||
import org.jetbrains.kotlin.ir.symbols.impl.IrFieldSymbolImpl
|
|
||||||
import org.jetbrains.kotlin.ir.util.hasAnnotation
|
import org.jetbrains.kotlin.ir.util.hasAnnotation
|
||||||
import org.jetbrains.kotlin.ir.util.patchDeclarationParents
|
import org.jetbrains.kotlin.ir.util.patchDeclarationParents
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
|
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
|
||||||
@@ -105,21 +103,16 @@ private class FieldRenamer(private val newNames: Map<IrField, Name>) : IrElement
|
|||||||
|
|
||||||
override fun visitField(declaration: IrField): IrStatement {
|
override fun visitField(declaration: IrField): IrStatement {
|
||||||
val newName = newNames[declaration] ?: return super.visitField(declaration)
|
val newName = newNames[declaration] ?: return super.visitField(declaration)
|
||||||
|
return buildField {
|
||||||
val descriptor = WrappedFieldDescriptor()
|
updateFrom(declaration)
|
||||||
val symbol = IrFieldSymbolImpl(descriptor)
|
name = newName
|
||||||
return IrFieldImpl(
|
}.also {
|
||||||
declaration.startOffset, declaration.endOffset, declaration.origin, symbol, newName,
|
|
||||||
declaration.type, declaration.visibility, declaration.isFinal, declaration.isExternal, declaration.isStatic,
|
|
||||||
).also {
|
|
||||||
descriptor.bind(it)
|
|
||||||
it.parent = declaration.parent
|
it.parent = declaration.parent
|
||||||
it.initializer = declaration.initializer
|
it.initializer = declaration.initializer
|
||||||
?.transform(this, null)
|
?.transform(this, null)
|
||||||
?.patchDeclarationParents(it)
|
?.patchDeclarationParents(it)
|
||||||
it.metadata = declaration.metadata
|
|
||||||
|
|
||||||
newSymbols[declaration] = symbol
|
newSymbols[declaration] = it.symbol
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user