diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/DeserializedPackageFragmentImpl.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/DeserializedPackageFragmentImpl.kt index 5863ac88f6c..c8f0c882dcd 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/DeserializedPackageFragmentImpl.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/DeserializedPackageFragmentImpl.kt @@ -30,16 +30,20 @@ abstract class DeserializedPackageFragmentImpl( fqName: FqName, storageManager: StorageManager, module: ModuleDescriptor, - protected val proto: ProtoBuf.PackageFragment, + proto: ProtoBuf.PackageFragment, private val containerSource: DeserializedContainerSource? ) : DeserializedPackageFragment(fqName, storageManager, module) { protected val nameResolver = NameResolverImpl(proto.strings, proto.qualifiedNames) override val classDataFinder = ProtoBasedClassDataFinder(proto, nameResolver) { containerSource ?: SourceElement.NO_SOURCE } + // Temporary storage: until `initialize` is called + private var _proto: ProtoBuf.PackageFragment? = proto private lateinit var _memberScope: MemberScope override fun initialize(components: DeserializationComponents) { + val proto = _proto ?: error("Repeated call to DeserializedPackageFragmentImpl::initialize") + _proto = null _memberScope = DeserializedPackageMemberScope( this, proto.`package`, nameResolver, containerSource, components, classNames = { diff --git a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptPackageFragment.kt b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptPackageFragment.kt index 6d04a34a34f..098078018e4 100644 --- a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptPackageFragment.kt +++ b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptPackageFragment.kt @@ -40,11 +40,10 @@ class KotlinJavascriptPackageFragment( header: JsProtoBuf.Header, configuration: DeserializationConfiguration ) : DeserializedPackageFragmentImpl(fqName, storageManager, module, proto, JsContainerSource(fqName, header, configuration)) { - val fileMap: Map by storageManager.createLazyValue { - this.proto.getExtension(JsProtoBuf.packageFragmentFiles).fileList.withIndex().associate { (index, file) -> + val fileMap: Map = + proto.getExtension(JsProtoBuf.packageFragmentFiles).fileList.withIndex().associate { (index, file) -> (if (file.hasId()) file.id else index) to FileHolder(file.annotationList) } - } private lateinit var annotationDeserializer: AnnotationDeserializer