Pass LookupTracker to deserialized scopes in JS KLIB compiler
Before this change, deserialized scopes were not tracking lookups properly, because lookup tracker was not passed from compiler configuration correctly. Because of that, lookups from dependencies were not tracked, so multi-module IC was not working (chages were passed between modules, but affected source files were not invalidated).
This commit is contained in:
+12
-5
@@ -7,6 +7,7 @@ import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
||||
import org.jetbrains.kotlin.descriptors.deserialization.PlatformDependentTypeTransformer
|
||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||
import org.jetbrains.kotlin.descriptors.konan.KlibModuleDescriptorFactory
|
||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||
import org.jetbrains.kotlin.library.KotlinLibrary
|
||||
import org.jetbrains.kotlin.library.metadata.PackageAccessHandler
|
||||
import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfiguration
|
||||
@@ -31,7 +32,8 @@ interface KlibMetadataModuleDescriptorFactory {
|
||||
languageVersionSettings,
|
||||
storageManager,
|
||||
builtIns,
|
||||
packageAccessHandler
|
||||
packageAccessHandler,
|
||||
LookupTracker.DO_NOTHING
|
||||
)
|
||||
|
||||
fun createDescriptorAndNewBuiltIns(
|
||||
@@ -39,14 +41,17 @@ interface KlibMetadataModuleDescriptorFactory {
|
||||
languageVersionSettings: LanguageVersionSettings,
|
||||
storageManager: StorageManager,
|
||||
packageAccessHandler: PackageAccessHandler?
|
||||
) = createDescriptorOptionalBuiltIns(library, languageVersionSettings, storageManager, null, packageAccessHandler)
|
||||
) = createDescriptorOptionalBuiltIns(
|
||||
library, languageVersionSettings, storageManager, null, packageAccessHandler, LookupTracker.DO_NOTHING
|
||||
)
|
||||
|
||||
fun createDescriptorOptionalBuiltIns(
|
||||
library: KotlinLibrary,
|
||||
languageVersionSettings: LanguageVersionSettings,
|
||||
storageManager: StorageManager,
|
||||
builtIns: KotlinBuiltIns?,
|
||||
packageAccessHandler: PackageAccessHandler?
|
||||
packageAccessHandler: PackageAccessHandler?,
|
||||
lookupTracker: LookupTracker
|
||||
): ModuleDescriptorImpl
|
||||
|
||||
fun createPackageFragmentProvider(
|
||||
@@ -56,13 +61,15 @@ interface KlibMetadataModuleDescriptorFactory {
|
||||
storageManager: StorageManager,
|
||||
moduleDescriptor: ModuleDescriptor,
|
||||
configuration: DeserializationConfiguration,
|
||||
compositePackageFragmentAddend: PackageFragmentProvider?
|
||||
compositePackageFragmentAddend: PackageFragmentProvider?,
|
||||
lookupTracker: LookupTracker
|
||||
): PackageFragmentProvider
|
||||
|
||||
fun createCachedPackageFragmentProvider(
|
||||
byteArrays: List<ByteArray>,
|
||||
storageManager: StorageManager,
|
||||
moduleDescriptor: ModuleDescriptor,
|
||||
configuration: DeserializationConfiguration
|
||||
configuration: DeserializationConfiguration,
|
||||
lookupTracker: LookupTracker
|
||||
): PackageFragmentProvider
|
||||
}
|
||||
|
||||
+14
-10
@@ -46,7 +46,8 @@ class KlibMetadataModuleDescriptorFactoryImpl(
|
||||
languageVersionSettings: LanguageVersionSettings,
|
||||
storageManager: StorageManager,
|
||||
builtIns: KotlinBuiltIns?,
|
||||
packageAccessHandler: PackageAccessHandler?
|
||||
packageAccessHandler: PackageAccessHandler?,
|
||||
lookupTracker: LookupTracker
|
||||
): ModuleDescriptorImpl {
|
||||
|
||||
val libraryProto = parseModuleHeader(library.moduleHeaderData)
|
||||
@@ -73,7 +74,8 @@ class KlibMetadataModuleDescriptorFactoryImpl(
|
||||
storageManager,
|
||||
moduleDescriptor,
|
||||
deserializationConfiguration,
|
||||
compositePackageFragmentAddend
|
||||
compositePackageFragmentAddend,
|
||||
lookupTracker
|
||||
)
|
||||
|
||||
moduleDescriptor.initialize(provider)
|
||||
@@ -85,16 +87,16 @@ class KlibMetadataModuleDescriptorFactoryImpl(
|
||||
byteArrays: List<ByteArray>,
|
||||
storageManager: StorageManager,
|
||||
moduleDescriptor: ModuleDescriptor,
|
||||
configuration: DeserializationConfiguration
|
||||
|
||||
): PackageFragmentProvider {
|
||||
configuration: DeserializationConfiguration,
|
||||
lookupTracker: LookupTracker
|
||||
): PackageFragmentProvider {
|
||||
val deserializedPackageFragments = packageFragmentsFactory.createCachedPackageFragments(
|
||||
byteArrays, moduleDescriptor, storageManager
|
||||
)
|
||||
|
||||
val provider = PackageFragmentProviderImpl(deserializedPackageFragments)
|
||||
return initializePackageFragmentProvider(provider, deserializedPackageFragments, storageManager,
|
||||
moduleDescriptor, configuration, null)
|
||||
moduleDescriptor, configuration, null, lookupTracker)
|
||||
}
|
||||
|
||||
override fun createPackageFragmentProvider(
|
||||
@@ -104,7 +106,8 @@ class KlibMetadataModuleDescriptorFactoryImpl(
|
||||
storageManager: StorageManager,
|
||||
moduleDescriptor: ModuleDescriptor,
|
||||
configuration: DeserializationConfiguration,
|
||||
compositePackageFragmentAddend: PackageFragmentProvider?
|
||||
compositePackageFragmentAddend: PackageFragmentProvider?,
|
||||
lookupTracker: LookupTracker
|
||||
): PackageFragmentProvider {
|
||||
|
||||
val deserializedPackageFragments = packageFragmentsFactory.createDeserializedPackageFragments(
|
||||
@@ -118,7 +121,7 @@ class KlibMetadataModuleDescriptorFactoryImpl(
|
||||
|
||||
val provider = PackageFragmentProviderImpl(deserializedPackageFragments + syntheticPackageFragments)
|
||||
return initializePackageFragmentProvider(provider, deserializedPackageFragments, storageManager,
|
||||
moduleDescriptor, configuration, compositePackageFragmentAddend)
|
||||
moduleDescriptor, configuration, compositePackageFragmentAddend, lookupTracker)
|
||||
}
|
||||
|
||||
fun initializePackageFragmentProvider(
|
||||
@@ -127,7 +130,8 @@ class KlibMetadataModuleDescriptorFactoryImpl(
|
||||
storageManager: StorageManager,
|
||||
moduleDescriptor: ModuleDescriptor,
|
||||
configuration: DeserializationConfiguration,
|
||||
compositePackageFragmentAddend: PackageFragmentProvider?
|
||||
compositePackageFragmentAddend: PackageFragmentProvider?,
|
||||
lookupTracker: LookupTracker
|
||||
): PackageFragmentProvider {
|
||||
|
||||
val notFoundClasses = NotFoundClasses(storageManager, moduleDescriptor)
|
||||
@@ -147,7 +151,7 @@ class KlibMetadataModuleDescriptorFactoryImpl(
|
||||
provider,
|
||||
LocalClassifierTypeSettings.Default,
|
||||
ErrorReporter.DO_NOTHING,
|
||||
LookupTracker.DO_NOTHING,
|
||||
lookupTracker,
|
||||
flexibleTypeDeserializer,
|
||||
emptyList(),
|
||||
notFoundClasses,
|
||||
|
||||
Reference in New Issue
Block a user