diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyProperty.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyProperty.kt index 2d33afc799f..f643fe45a77 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyProperty.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyProperty.kt @@ -5,9 +5,9 @@ package org.jetbrains.kotlin.ir.declarations.lazy +import org.jetbrains.kotlin.descriptors.DescriptorVisibility import org.jetbrains.kotlin.descriptors.Modality import org.jetbrains.kotlin.descriptors.PropertyDescriptor -import org.jetbrains.kotlin.descriptors.DescriptorVisibility import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.expressions.IrConstructorCall @@ -15,8 +15,6 @@ import org.jetbrains.kotlin.ir.symbols.IrPropertySymbol import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator import org.jetbrains.kotlin.ir.util.TypeTranslator import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.resolve.BindingContext -import org.jetbrains.kotlin.resolve.hasBackingField import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPropertyDescriptor @@ -39,7 +37,6 @@ class IrLazyProperty( override val isFakeOverride: Boolean, override val stubGenerator: DeclarationStubGenerator, override val typeTranslator: TypeTranslator, - bindingContext: BindingContext? = null ) : IrProperty(), IrLazyDeclarationBase { init { symbol.bind(this) @@ -50,7 +47,8 @@ class IrLazyProperty( override var annotations: List by createLazyAnnotations() private val hasBackingField: Boolean = - descriptor.hasBackingField(bindingContext) || stubGenerator.extensions.isPropertyWithPlatformField(descriptor) + descriptor.compileTimeInitializer != null || descriptor.getter == null || + stubGenerator.extensions.isPropertyWithPlatformField(descriptor) override var backingField: IrField? by lazyVar { if (hasBackingField) { diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeclarationStubGenerator.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeclarationStubGenerator.kt index 509a8946974..7bcc7237ed6 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeclarationStubGenerator.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/DeclarationStubGenerator.kt @@ -22,14 +22,12 @@ import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.lazy.* -import org.jetbrains.kotlin.ir.descriptors.* import org.jetbrains.kotlin.ir.expressions.impl.IrErrorExpressionImpl import org.jetbrains.kotlin.ir.linkage.IrProvider import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol import org.jetbrains.kotlin.ir.symbols.IrSymbol import org.jetbrains.kotlin.ir.symbols.IrTypeParameterSymbol import org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl -import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.descriptorUtil.isEffectivelyExternal import org.jetbrains.kotlin.resolve.isInlineClass @@ -145,10 +143,7 @@ class DeclarationStubGenerator( private fun computeOrigin(descriptor: DeclarationDescriptor): IrDeclarationOrigin = extensions.computeExternalDeclarationOrigin(descriptor) ?: IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB - fun generatePropertyStub( - descriptor: PropertyDescriptor, - bindingContext: BindingContext? = null - ): IrProperty { + fun generatePropertyStub(descriptor: PropertyDescriptor): IrProperty { val referenced = symbolTable.referenceProperty(descriptor) if (referenced.isBound) { return referenced.owner @@ -165,7 +160,7 @@ class DeclarationStubGenerator( descriptor.isVar, descriptor.isConst, descriptor.isLateInit, descriptor.isDelegated, descriptor.isEffectivelyExternal(), descriptor.isExpect, isFakeOverride = (origin == IrDeclarationOrigin.FAKE_OVERRIDE), - stubGenerator = this, typeTranslator = typeTranslator, bindingContext = bindingContext + stubGenerator = this, typeTranslator, ) } }