[JPS] Fix incremental build after changing Java enum used in Kotlin when

EnumWhenTracker implemented for tracking changed java enum class items, that used in kotlin when expression.

#KT-47824 Fixed
This commit is contained in:
Aleksei.Cherepanov
2021-11-04 17:13:56 +03:00
committed by Space
parent ee8de63497
commit 3d8f140d6b
38 changed files with 319 additions and 57 deletions
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.frontend.di.configureIncrementalCompilation
import org.jetbrains.kotlin.frontend.di.configureModule
import org.jetbrains.kotlin.frontend.di.configureStandardResolveComponents
import org.jetbrains.kotlin.incremental.components.EnumWhenTracker
import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
import org.jetbrains.kotlin.incremental.components.InlineConstTracker
import org.jetbrains.kotlin.incremental.components.LookupTracker
@@ -47,6 +48,7 @@ fun createContainerForJS(
lookupTracker: LookupTracker,
expectActualTracker: ExpectActualTracker,
inlineConstTracker: InlineConstTracker,
enumWhenTracker: EnumWhenTracker,
additionalPackages: List<PackageFragmentProvider>,
targetEnvironment: TargetEnvironment,
): StorageComponentContainer {
@@ -59,7 +61,7 @@ fun createContainerForJS(
languageVersionSettings
)
configureIncrementalCompilation(lookupTracker, expectActualTracker, inlineConstTracker)
configureIncrementalCompilation(lookupTracker, expectActualTracker, inlineConstTracker, enumWhenTracker)
configureStandardResolveComponents()
useInstance(declarationProviderFactory)
@@ -83,11 +85,12 @@ fun createTopDownAnalyzerForJs(
lookupTracker: LookupTracker,
expectActualTracker: ExpectActualTracker,
inlineConstTracker: InlineConstTracker,
enumWhenTracker: EnumWhenTracker,
additionalPackages: List<PackageFragmentProvider>,
targetEnvironment: TargetEnvironment,
): LazyTopDownAnalyzer {
return createContainerForJS(
moduleContext, bindingTrace, declarationProviderFactory, languageVersionSettings,
lookupTracker, expectActualTracker, inlineConstTracker, additionalPackages, targetEnvironment
lookupTracker, expectActualTracker, inlineConstTracker, enumWhenTracker, additionalPackages, targetEnvironment
).get<LazyTopDownAnalyzer>()
}
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.context.ProjectContext
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.frontend.js.di.createContainerForJS
import org.jetbrains.kotlin.incremental.components.EnumWhenTracker
import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
import org.jetbrains.kotlin.incremental.components.InlineConstTracker
import org.jetbrains.kotlin.incremental.components.LookupTracker
@@ -107,6 +108,7 @@ abstract class AbstractTopDownAnalyzerFacadeForJS {
val lookupTracker = configuration.get(CommonConfigurationKeys.LOOKUP_TRACKER) ?: LookupTracker.DO_NOTHING
val expectActualTracker = configuration.get(CommonConfigurationKeys.EXPECT_ACTUAL_TRACKER) ?: ExpectActualTracker.DoNothing
val inlineConstTracker = configuration.get(CommonConfigurationKeys.INLINE_CONST_TRACKER) ?: InlineConstTracker.DoNothing
val enumWhenTracker = configuration.get(CommonConfigurationKeys.ENUM_WHEN_TRACKER) ?: EnumWhenTracker.DoNothing
val languageVersionSettings = configuration.languageVersionSettings
val packageFragment = configuration[JSConfigurationKeys.INCREMENTAL_DATA_PROVIDER]?.let {
loadIncrementalCacheMetadata(it, moduleContext, lookupTracker, languageVersionSettings)
@@ -119,6 +121,7 @@ abstract class AbstractTopDownAnalyzerFacadeForJS {
lookupTracker,
expectActualTracker,
inlineConstTracker,
enumWhenTracker,
additionalPackages + listOfNotNull(packageFragment),
targetEnvironment,
)