[FIR] Support of importing optional annotation classes (JS/Native), ^KT-51757 Fixed

This commit is contained in:
Ivan Kochurkin
2022-04-16 15:03:29 +03:00
committed by teamcity
parent 73e7b99e05
commit 3b8183a736
11 changed files with 181 additions and 24 deletions
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.fir.deserialization
import com.intellij.openapi.progress.ProcessCanceledException
import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.caches.FirCache
import org.jetbrains.kotlin.fir.caches.createCache
@@ -107,10 +108,10 @@ abstract class AbstractFirDeserializedSymbolProvider(
data class Metadata(
val nameResolver: NameResolver,
val classProto: ProtoBuf.Class,
val annotationDeserializer: AbstractAnnotationDeserializer,
val containingLibraryPath: Path?,
val sourceElement: DeserializedContainerSource,
val classPostProcessor: DeserializedClassPostProcessor
val annotationDeserializer: AbstractAnnotationDeserializer?,
val moduleData: FirModuleData?,
val sourceElement: DeserializedContainerSource?,
val classPostProcessor: DeserializedClassPostProcessor?
) : ClassMetadataFindResult()
}
@@ -138,8 +139,8 @@ abstract class AbstractFirDeserializedSymbolProvider(
return when (val result = extractClassMetadata(classId, parentContext)) {
is ClassMetadataFindResult.NoMetadata -> FirRegularClassSymbol(classId) to result.classPostProcessor
is ClassMetadataFindResult.Metadata -> {
val (nameResolver, classProto, annotationDeserializer, containingLibrary, sourceElement, postProcessor) = result
val moduleData = moduleDataProvider.getModuleData(containingLibrary) ?: return null to null
val (nameResolver, classProto, annotationDeserializer, moduleData, sourceElement, postProcessor) = result
moduleData ?: return null to null
val symbol = FirRegularClassSymbol(classId)
deserializeClassToSymbol(
classId,