diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyTypeAliasDescriptor.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyTypeAliasDescriptor.kt index 3b4698f416c..417b16d09de 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyTypeAliasDescriptor.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/descriptors/LazyTypeAliasDescriptor.kt @@ -32,14 +32,14 @@ import org.jetbrains.kotlin.storage.getValue import org.jetbrains.kotlin.types.* class LazyTypeAliasDescriptor( - override val storageManager: StorageManager, + storageManager: StorageManager, private val trace: BindingTrace, containingDeclaration: DeclarationDescriptor, annotations: Annotations, name: Name, sourceElement: SourceElement, visibility: DescriptorVisibility -) : AbstractTypeAliasDescriptor(containingDeclaration, annotations, name, sourceElement, visibility), +) : AbstractTypeAliasDescriptor(storageManager, containingDeclaration, annotations, name, sourceElement, visibility), TypeAliasDescriptor { override val constructors: Collection by storageManager.createLazyValue { getTypeAliasConstructors() diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/AbstractTypeAliasDescriptor.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/AbstractTypeAliasDescriptor.kt index 08565623b66..cb46d5299ce 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/AbstractTypeAliasDescriptor.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/AbstractTypeAliasDescriptor.kt @@ -23,11 +23,12 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns import org.jetbrains.kotlin.resolve.scopes.MemberScope import org.jetbrains.kotlin.storage.StorageManager +import org.jetbrains.kotlin.storage.getValue import org.jetbrains.kotlin.types.* import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner -import org.jetbrains.kotlin.types.TypeRefinement abstract class AbstractTypeAliasDescriptor( + protected val storageManager: StorageManager, containingDeclaration: DeclarationDescriptor, annotations: Annotations, name: Name, @@ -35,8 +36,9 @@ abstract class AbstractTypeAliasDescriptor( private val visibilityImpl: DescriptorVisibility ) : DeclarationDescriptorNonRootImpl(containingDeclaration, annotations, name, sourceElement), TypeAliasDescriptor { - - protected abstract val storageManager: StorageManager + override val constructors: Collection by storageManager.createLazyValue { + getTypeAliasConstructors() + } // TODO kotlinize some interfaces private lateinit var declaredTypeParametersImpl: List diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberDescriptor.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberDescriptor.kt index de19f433664..07449a5b709 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberDescriptor.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberDescriptor.kt @@ -155,19 +155,18 @@ class DeserializedClassConstructorDescriptor( } class DeserializedTypeAliasDescriptor( - override val storageManager: StorageManager, - containingDeclaration: DeclarationDescriptor, - annotations: Annotations, - name: Name, - visibility: DescriptorVisibility, - override val proto: ProtoBuf.TypeAlias, - override val nameResolver: NameResolver, - override val typeTable: TypeTable, - override val versionRequirementTable: VersionRequirementTable, - override val containerSource: DeserializedContainerSource? -) : AbstractTypeAliasDescriptor(containingDeclaration, annotations, name, SourceElement.NO_SOURCE, visibility), + storageManager: StorageManager, + containingDeclaration: DeclarationDescriptor, + annotations: Annotations, + name: Name, + visibility: DescriptorVisibility, + override val proto: ProtoBuf.TypeAlias, + override val nameResolver: NameResolver, + override val typeTable: TypeTable, + override val versionRequirementTable: VersionRequirementTable, + override val containerSource: DeserializedContainerSource? +) : AbstractTypeAliasDescriptor(storageManager, containingDeclaration, annotations, name, SourceElement.NO_SOURCE, visibility), DeserializedMemberDescriptor { - override lateinit var constructors: Collection private set override lateinit var underlyingType: SimpleType private set override lateinit var expandedType: SimpleType private set @@ -184,7 +183,6 @@ class DeserializedTypeAliasDescriptor( this.expandedType = expandedType typeConstructorParameters = computeConstructorTypeParameters() defaultTypeImpl = computeDefaultType() - constructors = getTypeAliasConstructors() } override val classDescriptor: ClassDescriptor?