[IR] Reorder parameters in IrFactory#createField
This is to prepare for IrFactory auto-generation (KT-59308).
This commit is contained in:
committed by
Space Team
parent
90f6c53bf8
commit
0b7db067e6
@@ -149,15 +149,16 @@ class Fir2IrClassifierStorage(
|
|||||||
val contextReceiverFields = mutableListOf<IrField>()
|
val contextReceiverFields = mutableListOf<IrField>()
|
||||||
for ((index, contextReceiver) in klass.contextReceivers.withIndex()) {
|
for ((index, contextReceiver) in klass.contextReceivers.withIndex()) {
|
||||||
val irField = components.irFactory.createField(
|
val irField = components.irFactory.createField(
|
||||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET,
|
startOffset = UNDEFINED_OFFSET,
|
||||||
IrDeclarationOrigin.FIELD_FOR_CLASS_CONTEXT_RECEIVER,
|
endOffset = UNDEFINED_OFFSET,
|
||||||
IrFieldSymbolImpl(),
|
origin = IrDeclarationOrigin.FIELD_FOR_CLASS_CONTEXT_RECEIVER,
|
||||||
Name.identifier("contextReceiverField$index"),
|
name = Name.identifier("contextReceiverField$index"),
|
||||||
contextReceiver.typeRef.toIrType(),
|
visibility = DescriptorVisibilities.PRIVATE,
|
||||||
DescriptorVisibilities.PRIVATE,
|
symbol = IrFieldSymbolImpl(),
|
||||||
|
type = contextReceiver.typeRef.toIrType(),
|
||||||
isFinal = true,
|
isFinal = true,
|
||||||
|
isStatic = false,
|
||||||
isExternal = false,
|
isExternal = false,
|
||||||
isStatic = false
|
|
||||||
)
|
)
|
||||||
irField.parent = this@createContextReceiverFields
|
irField.parent = this@createContextReceiverFields
|
||||||
contextReceiverFields.add(irField)
|
contextReceiverFields.add(irField)
|
||||||
|
|||||||
+27
-12
@@ -798,11 +798,16 @@ class Fir2IrDeclarationStorage(
|
|||||||
val inferredType = type ?: firInitializerExpression!!.typeRef.toIrType()
|
val inferredType = type ?: firInitializerExpression!!.typeRef.toIrType()
|
||||||
return declareIrField { symbol ->
|
return declareIrField { symbol ->
|
||||||
irFactory.createField(
|
irFactory.createField(
|
||||||
startOffset, endOffset, origin, symbol,
|
startOffset = startOffset,
|
||||||
name, inferredType,
|
endOffset = endOffset,
|
||||||
visibility, isFinal = isFinal,
|
origin = origin,
|
||||||
isExternal = property.isExternal,
|
name = name,
|
||||||
|
visibility = visibility,
|
||||||
|
symbol = symbol,
|
||||||
|
type = inferredType,
|
||||||
|
isFinal = isFinal,
|
||||||
isStatic = property.isStatic || !(parent is IrClass || parent is IrScript),
|
isStatic = property.isStatic || !(parent is IrClass || parent is IrScript),
|
||||||
|
isExternal = property.isExternal,
|
||||||
).also {
|
).also {
|
||||||
it.correspondingPropertySymbol = this@createBackingField.symbol
|
it.correspondingPropertySymbol = this@createBackingField.symbol
|
||||||
}.apply {
|
}.apply {
|
||||||
@@ -1122,20 +1127,30 @@ class Fir2IrDeclarationStorage(
|
|||||||
signature, symbolFactory = { IrFieldPublicSymbolImpl(signature) }
|
signature, symbolFactory = { IrFieldPublicSymbolImpl(signature) }
|
||||||
) { symbol ->
|
) { symbol ->
|
||||||
irFactory.createField(
|
irFactory.createField(
|
||||||
startOffset, endOffset, origin, symbol,
|
startOffset = startOffset,
|
||||||
field.name, type, components.visibilityConverter.convertToDescriptorVisibility(field.visibility),
|
endOffset = endOffset,
|
||||||
|
origin = origin,
|
||||||
|
name = field.name,
|
||||||
|
visibility = components.visibilityConverter.convertToDescriptorVisibility(field.visibility),
|
||||||
|
symbol = symbol,
|
||||||
|
type = type,
|
||||||
isFinal = field.modality == Modality.FINAL,
|
isFinal = field.modality == Modality.FINAL,
|
||||||
isExternal = false,
|
isStatic = field.isStatic,
|
||||||
isStatic = field.isStatic
|
isExternal = false
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
irFactory.createField(
|
irFactory.createField(
|
||||||
startOffset, endOffset, origin, IrFieldSymbolImpl(),
|
startOffset = startOffset,
|
||||||
field.name, type, components.visibilityConverter.convertToDescriptorVisibility(field.visibility),
|
endOffset = endOffset,
|
||||||
|
origin = origin,
|
||||||
|
name = field.name,
|
||||||
|
visibility = components.visibilityConverter.convertToDescriptorVisibility(field.visibility),
|
||||||
|
symbol = IrFieldSymbolImpl(),
|
||||||
|
type = type,
|
||||||
isFinal = field.modality == Modality.FINAL,
|
isFinal = field.modality == Modality.FINAL,
|
||||||
isExternal = false,
|
isStatic = field.isStatic,
|
||||||
isStatic = field.isStatic
|
isExternal = false
|
||||||
)
|
)
|
||||||
}.apply {
|
}.apply {
|
||||||
val staticFakeOverrideKey = getFieldStaticFakeOverrideKey(field, containingClassLookupTag)
|
val staticFakeOverrideKey = getFieldStaticFakeOverrideKey(field, containingClassLookupTag)
|
||||||
|
|||||||
+10
-8
@@ -856,14 +856,16 @@ class LocalDeclarationsLowering(
|
|||||||
else
|
else
|
||||||
DECLARATION_ORIGIN_FIELD_FOR_CAPTURED_VALUE
|
DECLARATION_ORIGIN_FIELD_FOR_CAPTURED_VALUE
|
||||||
context.irFactory.createField(
|
context.irFactory.createField(
|
||||||
classDeclaration.startOffset,
|
startOffset = classDeclaration.startOffset,
|
||||||
classDeclaration.endOffset,
|
endOffset = classDeclaration.endOffset,
|
||||||
origin,
|
origin = origin,
|
||||||
symbol,
|
name = suggestNameForCapturedValue(capturedValue, generatedNames),
|
||||||
suggestNameForCapturedValue(capturedValue, generatedNames),
|
visibility = visibilityPolicy.forCapturedField(capturedValue.symbol),
|
||||||
capturedValue.type,
|
symbol = symbol,
|
||||||
visibilityPolicy.forCapturedField(capturedValue.symbol),
|
type = capturedValue.type,
|
||||||
isFinal = true, isExternal = false, isStatic = false,
|
isFinal = true,
|
||||||
|
isStatic = false,
|
||||||
|
isExternal = false,
|
||||||
).also {
|
).also {
|
||||||
it.parent = classDeclaration
|
it.parent = classDeclaration
|
||||||
}
|
}
|
||||||
|
|||||||
+20
-7
@@ -173,9 +173,16 @@ private class ScriptsToClassesLowering(val context: JvmBackendContext, val inner
|
|||||||
|
|
||||||
val earlierScriptField = irScript.earlierScriptsParameter?.let { earlierScriptsParameter ->
|
val earlierScriptField = irScript.earlierScriptsParameter?.let { earlierScriptsParameter ->
|
||||||
irScriptClass.factory.createField(
|
irScriptClass.factory.createField(
|
||||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, IrDeclarationOrigin.SCRIPT_EARLIER_SCRIPTS,
|
startOffset = UNDEFINED_OFFSET,
|
||||||
IrFieldSymbolImpl(), Name.identifier("\$\$earlierScripts"), earlierScriptsParameter.type,
|
endOffset = UNDEFINED_OFFSET,
|
||||||
DescriptorVisibilities.PRIVATE, isFinal = true, isExternal = false, isStatic = false
|
origin = IrDeclarationOrigin.SCRIPT_EARLIER_SCRIPTS,
|
||||||
|
name = Name.identifier("\$\$earlierScripts"),
|
||||||
|
visibility = DescriptorVisibilities.PRIVATE,
|
||||||
|
symbol = IrFieldSymbolImpl(),
|
||||||
|
type = earlierScriptsParameter.type,
|
||||||
|
isFinal = true,
|
||||||
|
isStatic = false,
|
||||||
|
isExternal = false,
|
||||||
)
|
)
|
||||||
}?.also {
|
}?.also {
|
||||||
it.parent = irScriptClass
|
it.parent = irScriptClass
|
||||||
@@ -185,10 +192,16 @@ private class ScriptsToClassesLowering(val context: JvmBackendContext, val inner
|
|||||||
val implicitReceiversFieldsWithParameters = arrayListOf<Pair<IrField, IrValueParameter>>().apply {
|
val implicitReceiversFieldsWithParameters = arrayListOf<Pair<IrField, IrValueParameter>>().apply {
|
||||||
irScript.implicitReceiversParameters.forEach { param ->
|
irScript.implicitReceiversParameters.forEach { param ->
|
||||||
val field = irScriptClass.factory.createField(
|
val field = irScriptClass.factory.createField(
|
||||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, IrDeclarationOrigin.SCRIPT_IMPLICIT_RECEIVER,
|
startOffset = UNDEFINED_OFFSET,
|
||||||
IrFieldSymbolImpl(), Name.identifier("\$\$implicitReceiver_${param.type.classFqName?.shortName()?.asString()!!}"),
|
endOffset = UNDEFINED_OFFSET,
|
||||||
typeRemapper.remapType(param.type),
|
origin = IrDeclarationOrigin.SCRIPT_IMPLICIT_RECEIVER,
|
||||||
DescriptorVisibilities.PRIVATE, isFinal = true, isExternal = false, isStatic = false
|
name = Name.identifier("\$\$implicitReceiver_${param.type.classFqName?.shortName()?.asString()!!}"),
|
||||||
|
visibility = DescriptorVisibilities.PRIVATE,
|
||||||
|
symbol = IrFieldSymbolImpl(),
|
||||||
|
type = typeRemapper.remapType(param.type),
|
||||||
|
isFinal = true,
|
||||||
|
isStatic = false,
|
||||||
|
isExternal = false
|
||||||
)
|
)
|
||||||
field.parent = irScriptClass
|
field.parent = irScriptClass
|
||||||
irScriptClass.declarations.add(field)
|
irScriptClass.declarations.add(field)
|
||||||
|
|||||||
+8
-7
@@ -101,15 +101,16 @@ internal class WasmPropertyReferenceLowering(val context: WasmBackendContext) :
|
|||||||
|
|
||||||
val kPropertiesField =
|
val kPropertiesField =
|
||||||
context.irFactory.createField(
|
context.irFactory.createField(
|
||||||
SYNTHETIC_OFFSET, SYNTHETIC_OFFSET,
|
startOffset = SYNTHETIC_OFFSET,
|
||||||
DECLARATION_ORIGIN_KPROPERTIES_FOR_DELEGATION,
|
endOffset = SYNTHETIC_OFFSET,
|
||||||
IrFieldSymbolImpl(),
|
origin = DECLARATION_ORIGIN_KPROPERTIES_FOR_DELEGATION,
|
||||||
Name.identifier("\$KPROPERTIES"),
|
name = Name.identifier("\$KPROPERTIES"),
|
||||||
kPropertiesFieldType,
|
visibility = DescriptorVisibilities.PRIVATE,
|
||||||
DescriptorVisibilities.PRIVATE,
|
symbol = IrFieldSymbolImpl(),
|
||||||
|
type = kPropertiesFieldType,
|
||||||
isFinal = true,
|
isFinal = true,
|
||||||
isExternal = false,
|
|
||||||
isStatic = true,
|
isStatic = true,
|
||||||
|
isExternal = false,
|
||||||
).apply {
|
).apply {
|
||||||
parent = irFile
|
parent = irFile
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-8
@@ -172,16 +172,16 @@ class WasmSharedVariablesManager(val context: JsCommonBackendContext, val builtI
|
|||||||
val symbol = IrFieldSymbolImpl()
|
val symbol = IrFieldSymbolImpl()
|
||||||
val fieldName = Name.identifier("v")
|
val fieldName = Name.identifier("v")
|
||||||
return context.irFactory.createField(
|
return context.irFactory.createField(
|
||||||
UNDEFINED_OFFSET,
|
startOffset = UNDEFINED_OFFSET,
|
||||||
UNDEFINED_OFFSET,
|
endOffset = UNDEFINED_OFFSET,
|
||||||
IrDeclarationOrigin.FIELD_FOR_OUTER_THIS,
|
origin = IrDeclarationOrigin.FIELD_FOR_OUTER_THIS,
|
||||||
symbol,
|
name = fieldName,
|
||||||
fieldName,
|
visibility = DescriptorVisibilities.PUBLIC,
|
||||||
builtIns.anyNType,
|
symbol = symbol,
|
||||||
DescriptorVisibilities.PUBLIC,
|
type = builtIns.anyNType,
|
||||||
isFinal = false,
|
isFinal = false,
|
||||||
isExternal = false,
|
|
||||||
isStatic = false,
|
isStatic = false,
|
||||||
|
isExternal = false,
|
||||||
).also {
|
).also {
|
||||||
it.parent = closureBoxClassDeclaration
|
it.parent = closureBoxClassDeclaration
|
||||||
closureBoxClassDeclaration.declarations += it
|
closureBoxClassDeclaration.declarations += it
|
||||||
|
|||||||
@@ -451,15 +451,16 @@ internal class ClassGenerator(
|
|||||||
private fun generateFieldsForContextReceivers(irClass: IrClass, classDescriptor: ClassDescriptor) {
|
private fun generateFieldsForContextReceivers(irClass: IrClass, classDescriptor: ClassDescriptor) {
|
||||||
for ((fieldIndex, receiverDescriptor) in classDescriptor.contextReceivers.withIndex()) {
|
for ((fieldIndex, receiverDescriptor) in classDescriptor.contextReceivers.withIndex()) {
|
||||||
val irField = context.irFactory.createField(
|
val irField = context.irFactory.createField(
|
||||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET,
|
startOffset = UNDEFINED_OFFSET,
|
||||||
IrDeclarationOrigin.FIELD_FOR_CLASS_CONTEXT_RECEIVER,
|
endOffset = UNDEFINED_OFFSET,
|
||||||
IrFieldSymbolImpl(),
|
origin = IrDeclarationOrigin.FIELD_FOR_CLASS_CONTEXT_RECEIVER,
|
||||||
Name.identifier("contextReceiverField$fieldIndex"),
|
name = Name.identifier("contextReceiverField$fieldIndex"),
|
||||||
receiverDescriptor.type.toIrType(),
|
visibility = DescriptorVisibilities.PRIVATE,
|
||||||
DescriptorVisibilities.PRIVATE,
|
symbol = IrFieldSymbolImpl(),
|
||||||
|
type = receiverDescriptor.type.toIrType(),
|
||||||
isFinal = true,
|
isFinal = true,
|
||||||
|
isStatic = false,
|
||||||
isExternal = false,
|
isExternal = false,
|
||||||
isStatic = false
|
|
||||||
)
|
)
|
||||||
context.additionalDescriptorStorage.put(receiverDescriptor.value, irField)
|
context.additionalDescriptorStorage.put(receiverDescriptor.value, irField)
|
||||||
irClass.addMember(irField)
|
irClass.addMember(irField)
|
||||||
|
|||||||
+10
-2
@@ -143,8 +143,16 @@ internal class DelegatedPropertyGenerator(
|
|||||||
startOffset, endOffset, origin, delegateDescriptor, type
|
startOffset, endOffset, origin, delegateDescriptor, type
|
||||||
) {
|
) {
|
||||||
context.irFactory.createField(
|
context.irFactory.createField(
|
||||||
startOffset, endOffset, origin, it, delegateDescriptor.name, type, delegateDescriptor.visibility,
|
startOffset = startOffset,
|
||||||
!delegateDescriptor.isVar, false, delegateDescriptor.dispatchReceiverParameter == null
|
endOffset = endOffset,
|
||||||
|
origin = origin,
|
||||||
|
name = delegateDescriptor.name,
|
||||||
|
visibility = delegateDescriptor.visibility,
|
||||||
|
symbol = it,
|
||||||
|
type = type,
|
||||||
|
isFinal = !delegateDescriptor.isVar,
|
||||||
|
isStatic = delegateDescriptor.dispatchReceiverParameter == null,
|
||||||
|
isExternal = false
|
||||||
).apply {
|
).apply {
|
||||||
metadata = DescriptorMetadataSource.Property(propertyDescriptor)
|
metadata = DescriptorMetadataSource.Property(propertyDescriptor)
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-3
@@ -43,9 +43,16 @@ inline fun IrFactory.buildClass(builder: IrClassBuilder.() -> Unit) =
|
|||||||
@PublishedApi
|
@PublishedApi
|
||||||
internal fun IrFactory.buildField(builder: IrFieldBuilder): IrField = with(builder) {
|
internal fun IrFactory.buildField(builder: IrFieldBuilder): IrField = with(builder) {
|
||||||
createField(
|
createField(
|
||||||
startOffset, endOffset, origin,
|
startOffset = startOffset,
|
||||||
IrFieldSymbolImpl(),
|
endOffset = endOffset,
|
||||||
name, type, visibility, isFinal, isExternal, isStatic,
|
origin = origin,
|
||||||
|
name = name,
|
||||||
|
visibility = visibility,
|
||||||
|
symbol = IrFieldSymbolImpl(),
|
||||||
|
type = type,
|
||||||
|
isFinal = isFinal,
|
||||||
|
isStatic = isStatic,
|
||||||
|
isExternal = isExternal,
|
||||||
).also {
|
).also {
|
||||||
it.metadata = metadata
|
it.metadata = metadata
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,13 +79,13 @@ interface IrFactory {
|
|||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
symbol: IrFieldSymbol,
|
|
||||||
name: Name,
|
name: Name,
|
||||||
type: IrType,
|
|
||||||
visibility: DescriptorVisibility,
|
visibility: DescriptorVisibility,
|
||||||
|
symbol: IrFieldSymbol,
|
||||||
|
type: IrType,
|
||||||
isFinal: Boolean,
|
isFinal: Boolean,
|
||||||
isExternal: Boolean,
|
|
||||||
isStatic: Boolean,
|
isStatic: Boolean,
|
||||||
|
isExternal: Boolean,
|
||||||
): IrField
|
): IrField
|
||||||
|
|
||||||
fun createFunction(
|
fun createFunction(
|
||||||
|
|||||||
@@ -97,13 +97,13 @@ abstract class AbstractIrFactoryImpl : IrFactory {
|
|||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
symbol: IrFieldSymbol,
|
|
||||||
name: Name,
|
name: Name,
|
||||||
type: IrType,
|
|
||||||
visibility: DescriptorVisibility,
|
visibility: DescriptorVisibility,
|
||||||
|
symbol: IrFieldSymbol,
|
||||||
|
type: IrType,
|
||||||
isFinal: Boolean,
|
isFinal: Boolean,
|
||||||
isExternal: Boolean,
|
|
||||||
isStatic: Boolean,
|
isStatic: Boolean,
|
||||||
|
isExternal: Boolean,
|
||||||
): IrField =
|
): IrField =
|
||||||
IrFieldImpl(startOffset, endOffset, origin, symbol, name, type, visibility, isFinal, isExternal, isStatic, factory = this)
|
IrFieldImpl(startOffset, endOffset, origin, symbol, name, type, visibility, isFinal, isExternal, isStatic, factory = this)
|
||||||
|
|
||||||
|
|||||||
+7
-7
@@ -138,25 +138,25 @@ class IrFactoryImplForJsIC(override val stageController: StageController) : Abst
|
|||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
symbol: IrFieldSymbol,
|
|
||||||
name: Name,
|
name: Name,
|
||||||
type: IrType,
|
|
||||||
visibility: DescriptorVisibility,
|
visibility: DescriptorVisibility,
|
||||||
|
symbol: IrFieldSymbol,
|
||||||
|
type: IrType,
|
||||||
isFinal: Boolean,
|
isFinal: Boolean,
|
||||||
isExternal: Boolean,
|
isStatic: Boolean,
|
||||||
isStatic: Boolean
|
isExternal: Boolean
|
||||||
): IrField {
|
): IrField {
|
||||||
return super.createField(
|
return super.createField(
|
||||||
startOffset,
|
startOffset,
|
||||||
endOffset,
|
endOffset,
|
||||||
origin,
|
origin,
|
||||||
symbol,
|
|
||||||
name,
|
name,
|
||||||
type,
|
|
||||||
visibility,
|
visibility,
|
||||||
|
symbol,
|
||||||
|
type,
|
||||||
isFinal,
|
isFinal,
|
||||||
isExternal,
|
|
||||||
isStatic,
|
isStatic,
|
||||||
|
isExternal,
|
||||||
).register()
|
).register()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -81,17 +81,17 @@ class LazyIrFactory(
|
|||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
endOffset: Int,
|
endOffset: Int,
|
||||||
origin: IrDeclarationOrigin,
|
origin: IrDeclarationOrigin,
|
||||||
symbol: IrFieldSymbol,
|
|
||||||
name: Name,
|
name: Name,
|
||||||
type: IrType,
|
|
||||||
visibility: DescriptorVisibility,
|
visibility: DescriptorVisibility,
|
||||||
|
symbol: IrFieldSymbol,
|
||||||
|
type: IrType,
|
||||||
isFinal: Boolean,
|
isFinal: Boolean,
|
||||||
isExternal: Boolean,
|
isStatic: Boolean,
|
||||||
isStatic: Boolean
|
isExternal: Boolean
|
||||||
): IrField = if (symbol.isBound)
|
): IrField = if (symbol.isBound)
|
||||||
symbol.owner
|
symbol.owner
|
||||||
else
|
else
|
||||||
delegate.createField(startOffset, endOffset, origin, symbol, name, type, visibility, isFinal, isExternal, isStatic)
|
delegate.createField(startOffset, endOffset, origin, name, visibility, symbol, type, isFinal, isStatic, isExternal)
|
||||||
|
|
||||||
override fun createFunction(
|
override fun createFunction(
|
||||||
startOffset: Int,
|
startOffset: Int,
|
||||||
|
|||||||
@@ -264,15 +264,16 @@ open class DeepCopyIrTreeWithSymbols(
|
|||||||
|
|
||||||
override fun visitField(declaration: IrField): IrField =
|
override fun visitField(declaration: IrField): IrField =
|
||||||
declaration.factory.createField(
|
declaration.factory.createField(
|
||||||
declaration.startOffset, declaration.endOffset,
|
startOffset = declaration.startOffset,
|
||||||
mapDeclarationOrigin(declaration.origin),
|
endOffset = declaration.endOffset,
|
||||||
symbolRemapper.getDeclaredField(declaration.symbol),
|
origin = mapDeclarationOrigin(declaration.origin),
|
||||||
symbolRenamer.getFieldName(declaration.symbol),
|
name = symbolRenamer.getFieldName(declaration.symbol),
|
||||||
declaration.type.remapType(),
|
visibility = declaration.visibility,
|
||||||
declaration.visibility,
|
symbol = symbolRemapper.getDeclaredField(declaration.symbol),
|
||||||
|
type = declaration.type.remapType(),
|
||||||
isFinal = declaration.isFinal,
|
isFinal = declaration.isFinal,
|
||||||
isExternal = declaration.isExternal,
|
|
||||||
isStatic = declaration.isStatic,
|
isStatic = declaration.isStatic,
|
||||||
|
isExternal = declaration.isExternal,
|
||||||
).apply {
|
).apply {
|
||||||
transformAnnotations(declaration)
|
transformAnnotations(declaration)
|
||||||
initializer = declaration.initializer?.transform()
|
initializer = declaration.initializer?.transform()
|
||||||
|
|||||||
@@ -715,9 +715,16 @@ open class SymbolTable(
|
|||||||
visibility: DescriptorVisibility? = null,
|
visibility: DescriptorVisibility? = null,
|
||||||
fieldFactory: (IrFieldSymbol) -> IrField = {
|
fieldFactory: (IrFieldSymbol) -> IrField = {
|
||||||
irFactory.createField(
|
irFactory.createField(
|
||||||
startOffset, endOffset, origin, it, nameProvider.nameForDeclaration(descriptor), type,
|
startOffset = startOffset,
|
||||||
visibility ?: it.descriptor.visibility, !it.descriptor.isVar, it.descriptor.isEffectivelyExternal(),
|
endOffset = endOffset,
|
||||||
it.descriptor.dispatchReceiverParameter == null
|
origin = origin,
|
||||||
|
name = nameProvider.nameForDeclaration(descriptor),
|
||||||
|
visibility = visibility ?: it.descriptor.visibility,
|
||||||
|
symbol = it,
|
||||||
|
type = type,
|
||||||
|
isFinal = !it.descriptor.isVar,
|
||||||
|
isStatic = it.descriptor.dispatchReceiverParameter == null,
|
||||||
|
isExternal = it.descriptor.isEffectivelyExternal(),
|
||||||
).apply {
|
).apply {
|
||||||
metadata = DescriptorMetadataSource.Property(it.descriptor)
|
metadata = DescriptorMetadataSource.Property(it.descriptor)
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-8
@@ -690,14 +690,16 @@ class IrDeclarationDeserializer(
|
|||||||
|
|
||||||
val field = symbolTable.declareField(uniqId, { symbol.checkSymbolType(FIELD_SYMBOL) }) {
|
val field = symbolTable.declareField(uniqId, { symbol.checkSymbolType(FIELD_SYMBOL) }) {
|
||||||
irFactory.createField(
|
irFactory.createField(
|
||||||
startOffset, endOffset, origin,
|
startOffset = startOffset,
|
||||||
it,
|
endOffset = endOffset,
|
||||||
deserializeName(nameType.nameIndex),
|
origin = origin,
|
||||||
type,
|
name = deserializeName(nameType.nameIndex),
|
||||||
flags.visibility,
|
visibility = flags.visibility,
|
||||||
flags.isFinal,
|
symbol = it,
|
||||||
flags.isExternal || isEffectivelyExternal,
|
type = type,
|
||||||
flags.isStatic,
|
isFinal = flags.isFinal,
|
||||||
|
isStatic = flags.isStatic,
|
||||||
|
isExternal = flags.isExternal || isEffectivelyExternal,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+8
-8
@@ -167,16 +167,16 @@ internal class CStructVarClassGenerator(
|
|||||||
}
|
}
|
||||||
|
|
||||||
val cleanerField = irFactory.createField(
|
val cleanerField = irFactory.createField(
|
||||||
SYNTHETIC_OFFSET,
|
startOffset = SYNTHETIC_OFFSET,
|
||||||
SYNTHETIC_OFFSET,
|
endOffset = SYNTHETIC_OFFSET,
|
||||||
IrDeclarationOrigin.DEFINED,
|
origin = IrDeclarationOrigin.DEFINED,
|
||||||
IrFieldSymbolImpl(),
|
name = Name.identifier("cleaner"),
|
||||||
Name.identifier("cleaner"),
|
visibility = DescriptorVisibilities.PRIVATE,
|
||||||
symbols.createCleaner.owner.returnType,
|
symbol = IrFieldSymbolImpl(),
|
||||||
DescriptorVisibilities.PRIVATE,
|
type = symbols.createCleaner.owner.returnType,
|
||||||
isFinal = true,
|
isFinal = true,
|
||||||
|
isStatic = false,
|
||||||
isExternal = false,
|
isExternal = false,
|
||||||
isStatic = false
|
|
||||||
).also { field ->
|
).also { field ->
|
||||||
field.parent = irClass
|
field.parent = irClass
|
||||||
field.initializer = irBuilder(irBuiltIns, field.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).run {
|
field.initializer = irBuilder(irBuiltIns, field.symbol, SYNTHETIC_OFFSET, SYNTHETIC_OFFSET).run {
|
||||||
|
|||||||
+10
-3
@@ -136,9 +136,16 @@ fun AndroidIrBuilder.getParcelableCreator(irClass: IrClass): IrExpression {
|
|||||||
// field access.
|
// field access.
|
||||||
val creatorType = androidSymbols.androidOsParcelableCreator.typeWith(irClass.symbol.starProjectedType)
|
val creatorType = androidSymbols.androidOsParcelableCreator.typeWith(irClass.symbol.starProjectedType)
|
||||||
val creatorField = irClass.factory.createField(
|
val creatorField = irClass.factory.createField(
|
||||||
UNDEFINED_OFFSET, UNDEFINED_OFFSET, IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB,
|
startOffset = UNDEFINED_OFFSET,
|
||||||
IrFieldSymbolImpl(), CREATOR_NAME, creatorType, DescriptorVisibilities.PUBLIC,
|
endOffset = UNDEFINED_OFFSET,
|
||||||
isFinal = true, isExternal = false, isStatic = true,
|
origin = IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB,
|
||||||
|
name = CREATOR_NAME,
|
||||||
|
visibility = DescriptorVisibilities.PUBLIC,
|
||||||
|
symbol = IrFieldSymbolImpl(),
|
||||||
|
type = creatorType,
|
||||||
|
isFinal = true,
|
||||||
|
isStatic = true,
|
||||||
|
isExternal = false,
|
||||||
).also { it.parent = irClass }
|
).also { it.parent = irClass }
|
||||||
|
|
||||||
return irGetField(null, creatorField)
|
return irGetField(null, creatorField)
|
||||||
|
|||||||
Reference in New Issue
Block a user