From 5fdf365ac4b28b3641b94820571a62afdb49e950 Mon Sep 17 00:00:00 2001 From: Ivan Kochurkin Date: Wed, 27 Apr 2022 16:12:59 +0300 Subject: [PATCH] [FIR] Use lazy initialization for OptionalAnnotationClassesProvider --- .../OptionalAnnotationClassesProvider.kt | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/OptionalAnnotationClassesProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/OptionalAnnotationClassesProvider.kt index 352246d4bf4..9cde0d2767b 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/OptionalAnnotationClassesProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/OptionalAnnotationClassesProvider.kt @@ -25,13 +25,11 @@ class OptionalAnnotationClassesProvider( session: FirSession, moduleDataProvider: ModuleDataProvider, kotlinScopeProvider: FirKotlinScopeProvider, - packagePartProvider: PackagePartProvider, + val packagePartProvider: PackagePartProvider, defaultDeserializationOrigin: FirDeclarationOrigin = FirDeclarationOrigin.Library ) : AbstractFirDeserializedSymbolProvider(session, moduleDataProvider, kotlinScopeProvider, defaultDeserializationOrigin) { - private val optionalAnnotationClasses: Map - private val optionalAnnotationPackages: Set - init { + private val optionalAnnotationClassesAndPackages by lazy(LazyThreadSafetyMode.PUBLICATION) { val optionalAnnotationClasses = mutableMapOf() val optionalAnnotationPackages = mutableSetOf() @@ -41,8 +39,7 @@ class OptionalAnnotationClassesProvider( optionalAnnotationPackages.add(classId.packageFqName) } - this.optionalAnnotationClasses = optionalAnnotationClasses - this.optionalAnnotationPackages = optionalAnnotationPackages + return@lazy Pair(optionalAnnotationClasses, optionalAnnotationPackages) } override fun computePackagePartsInfos(packageFqName: FqName): List { @@ -53,7 +50,7 @@ class OptionalAnnotationClassesProvider( classId: ClassId, parentContext: FirDeserializationContext? ): ClassMetadataFindResult? { - val optionalAnnotationClass = optionalAnnotationClasses[classId] ?: return null + val optionalAnnotationClass = optionalAnnotationClassesAndPackages.first[classId] ?: return null return ClassMetadataFindResult.Metadata( optionalAnnotationClass.nameResolver, @@ -69,5 +66,5 @@ class OptionalAnnotationClassesProvider( return JvmFlags.IS_COMPILED_IN_JVM_DEFAULT_MODE.get(classProto.getExtension(JvmProtoBuf.jvmClassFlags)) } - override fun getPackage(fqName: FqName): FqName? = if (optionalAnnotationPackages.contains(fqName)) fqName else null + override fun getPackage(fqName: FqName): FqName? = if (optionalAnnotationClassesAndPackages.second.contains(fqName)) fqName else null } \ No newline at end of file