IR metadata source: do not require descriptor in property metadata
This commit is contained in:
+3
-3
@@ -660,7 +660,7 @@ class Fir2IrDeclarationStorage(
|
|||||||
it.populateOverriddenSymbols(thisReceiverOwner)
|
it.populateOverriddenSymbols(thisReceiverOwner)
|
||||||
}
|
}
|
||||||
}.apply {
|
}.apply {
|
||||||
metadata = FirMetadataSource.Property(property, descriptor)
|
metadata = FirMetadataSource.Property(property)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -708,7 +708,7 @@ class Fir2IrDeclarationStorage(
|
|||||||
isExpect = property.isExpect,
|
isExpect = property.isExpect,
|
||||||
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE
|
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE
|
||||||
).apply {
|
).apply {
|
||||||
metadata = FirMetadataSource.Variable(property, descriptor)
|
metadata = FirMetadataSource.Variable(property)
|
||||||
enterScope(this)
|
enterScope(this)
|
||||||
if (irParent != null) {
|
if (irParent != null) {
|
||||||
parent = irParent
|
parent = irParent
|
||||||
@@ -794,7 +794,7 @@ class Fir2IrDeclarationStorage(
|
|||||||
isStatic = field.isStatic,
|
isStatic = field.isStatic,
|
||||||
isFakeOverride = false
|
isFakeOverride = false
|
||||||
).apply {
|
).apply {
|
||||||
metadata = FirMetadataSource.Variable(field, descriptor)
|
metadata = FirMetadataSource.Variable(field)
|
||||||
descriptor.bind(this)
|
descriptor.bind(this)
|
||||||
fieldCache[field] = this
|
fieldCache[field] = this
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.backend
|
package org.jetbrains.kotlin.fir.backend
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.declarations.MetadataSource
|
import org.jetbrains.kotlin.ir.declarations.MetadataSource
|
||||||
@@ -44,17 +43,22 @@ interface FirMetadataSource : MetadataSource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class Property(
|
class Property(
|
||||||
val property: FirProperty, descriptor: PropertyDescriptor
|
val property: FirProperty
|
||||||
) : MetadataSource.Property(descriptor), FirMetadataSource {
|
) : FirMetadataSource {
|
||||||
override val session: FirSession
|
override val session: FirSession
|
||||||
get() = property.session
|
get() = property.session
|
||||||
|
|
||||||
|
override val name: Name
|
||||||
|
get() = property.name
|
||||||
}
|
}
|
||||||
|
|
||||||
class Variable(
|
class Variable(
|
||||||
val variable: FirVariable<*>,
|
val variable: FirVariable<*>
|
||||||
descriptor: PropertyDescriptor
|
) : FirMetadataSource {
|
||||||
) : MetadataSource.Property(descriptor), FirMetadataSource {
|
|
||||||
override val session: FirSession
|
override val session: FirSession
|
||||||
get() = variable.session
|
get() = variable.session
|
||||||
|
|
||||||
|
override val name: Name
|
||||||
|
get() = variable.name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -134,7 +134,7 @@ class DescriptorBasedClassCodegen internal constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun bindFieldMetadata(field: IrField, fieldType: Type, fieldName: String) {
|
override fun bindFieldMetadata(field: IrField, fieldType: Type, fieldName: String) {
|
||||||
val descriptor = field.metadata?.descriptor
|
val descriptor = (field.metadata as? MetadataSource.Property)?.descriptor
|
||||||
if (descriptor != null) {
|
if (descriptor != null) {
|
||||||
state.globalSerializationBindings.put(JvmSerializationBindings.FIELD_FOR_PROPERTY, descriptor, fieldType to fieldName)
|
state.globalSerializationBindings.put(JvmSerializationBindings.FIELD_FOR_PROPERTY, descriptor, fieldType to fieldName)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -17,7 +17,7 @@ class IrFieldBuilder : IrDeclarationBuilder() {
|
|||||||
var isExternal: Boolean = false
|
var isExternal: Boolean = false
|
||||||
var isStatic: Boolean = false
|
var isStatic: Boolean = false
|
||||||
var isFakeOverride: Boolean = false
|
var isFakeOverride: Boolean = false
|
||||||
var metadata: MetadataSource.Property? = null
|
var metadata: MetadataSource? = null
|
||||||
|
|
||||||
fun updateFrom(from: IrField) {
|
fun updateFrom(from: IrField) {
|
||||||
super.updateFrom(from)
|
super.updateFrom(from)
|
||||||
|
|||||||
@@ -27,5 +27,5 @@ interface IrField :
|
|||||||
|
|
||||||
var correspondingPropertySymbol: IrPropertySymbol?
|
var correspondingPropertySymbol: IrPropertySymbol?
|
||||||
|
|
||||||
override val metadata: MetadataSource.Property?
|
override val metadata: MetadataSource?
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -104,9 +104,9 @@ class IrFieldImpl(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override var metadataField: MetadataSource.Property? = null
|
override var metadataField: MetadataSource? = null
|
||||||
|
|
||||||
override var metadata: MetadataSource.Property?
|
override var metadata: MetadataSource?
|
||||||
get() = getCarrier().metadataField
|
get() = getCarrier().metadataField
|
||||||
set(v) {
|
set(v) {
|
||||||
if (metadata !== v) {
|
if (metadata !== v) {
|
||||||
|
|||||||
+2
-2
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol
|
|||||||
interface FieldCarrier : DeclarationCarrier<FieldCarrier> {
|
interface FieldCarrier : DeclarationCarrier<FieldCarrier> {
|
||||||
var initializerField: IrExpressionBody?
|
var initializerField: IrExpressionBody?
|
||||||
var correspondingPropertySymbolField: IrPropertySymbol?
|
var correspondingPropertySymbolField: IrPropertySymbol?
|
||||||
var metadataField: MetadataSource.Property?
|
var metadataField: MetadataSource?
|
||||||
var overridenSymbolsField: List<IrFieldSymbol>
|
var overridenSymbolsField: List<IrFieldSymbol>
|
||||||
|
|
||||||
override fun clone(): FieldCarrier {
|
override fun clone(): FieldCarrier {
|
||||||
@@ -40,6 +40,6 @@ class FieldCarrierImpl(
|
|||||||
override var annotationsField: List<IrConstructorCall>,
|
override var annotationsField: List<IrConstructorCall>,
|
||||||
override var initializerField: IrExpressionBody?,
|
override var initializerField: IrExpressionBody?,
|
||||||
override var correspondingPropertySymbolField: IrPropertySymbol?,
|
override var correspondingPropertySymbolField: IrPropertySymbol?,
|
||||||
override var metadataField: MetadataSource.Property?,
|
override var metadataField: MetadataSource?,
|
||||||
override var overridenSymbolsField: List<IrFieldSymbol>
|
override var overridenSymbolsField: List<IrFieldSymbol>
|
||||||
): FieldCarrier
|
): FieldCarrier
|
||||||
Reference in New Issue
Block a user