From e3aed04d965dc90ca282df19f9e604100ba4b8f7 Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Thu, 5 Apr 2018 15:53:04 +0300 Subject: [PATCH] Extract module info & target platform to separate frontend.common --- build.gradle.kts | 1 + compiler/frontend.common/build.gradle.kts | 18 ++++ .../jetbrains/kotlin/analyzer/ModuleInfo.kt | 39 ++++++++ .../kotlin/resolve/TargetPlatform.kt | 83 ++++++++++++++++ .../jvm/platform/JvmPlatformConfigurator.kt | 4 +- compiler/frontend/build.gradle.kts | 1 + .../kotlin/analyzer/AnalyzerFacade.kt | 31 ------ .../analyzer/common/CommonAnalyzerFacade.kt | 4 +- .../kotlin/analyzer/common/CommonPlatform.kt | 43 ++++++++ .../jetbrains/kotlin/frontend/di/injection.kt | 3 +- .../kotlin/resolve/TargetPlatform.kt | 99 +------------------ idea/build.gradle.kts | 1 + .../project/LibraryDependenciesCache.kt | 3 +- .../project/moduleInfosFromIdeaModel.kt | 3 +- .../idea/caches/project/multiplatformUtil.kt | 5 +- .../caches/resolve/ProjectResolutionFacade.kt | 3 +- .../builtIns/KotlinBuiltInDecompiler.kt | 8 +- .../navigation/SourceNavigationHelper.kt | 5 +- .../kotlin/idea/framework/LibraryKinds.kt | 3 +- .../platform/impl/CommonIdePlatformKind.kt | 4 +- .../idea/internal/KotlinBytecodeToolWindow.kt | 4 +- .../KotlinGenerateEqualsAndHashcodeAction.kt | 6 +- .../highlighter/PlatformExpectedAnnotator.kt | 4 +- ...tCamelCaseTestFunctionToSpacedIntention.kt | 4 +- ...KotlinNonJvmSourceRootConverterProvider.kt | 7 +- .../generate/AbstractCodeInsightActionTest.kt | 3 +- .../js/resolve/JsPlatformConfigurator.kt | 4 +- .../platform/KonanPlatformConfigurator.kt | 2 +- prepare/idea-plugin/build.gradle.kts | 1 + settings.gradle | 1 + ultimate/build.gradle.kts | 1 + ultimate/build.gradle.kts.173 | 1 + 32 files changed, 238 insertions(+), 161 deletions(-) create mode 100644 compiler/frontend.common/build.gradle.kts create mode 100644 compiler/frontend.common/src/org/jetbrains/kotlin/analyzer/ModuleInfo.kt create mode 100644 compiler/frontend.common/src/org/jetbrains/kotlin/resolve/TargetPlatform.kt create mode 100644 compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonPlatform.kt diff --git a/build.gradle.kts b/build.gradle.kts index 9eb5fc84f53..b5c5be44ecc 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -210,6 +210,7 @@ extra["compilerModules"] = arrayOf( emptyArray() }, ":compiler:frontend", + ":compiler:frontend.common", ":compiler:frontend.java", ":compiler:frontend.script", ":compiler:cli-common", diff --git a/compiler/frontend.common/build.gradle.kts b/compiler/frontend.common/build.gradle.kts new file mode 100644 index 00000000000..37a4fde6077 --- /dev/null +++ b/compiler/frontend.common/build.gradle.kts @@ -0,0 +1,18 @@ +plugins { + kotlin("jvm") + id("jps-compatible") +} + +dependencies { + compile(project(":compiler:psi")) + compile(project(":compiler:container")) + compileOnly(intellijCoreDep()) { includeJars("intellij-core", "annotations") } +} + + +sourceSets { + "main" { + projectDefault() + } + "test" {} +} \ No newline at end of file diff --git a/compiler/frontend.common/src/org/jetbrains/kotlin/analyzer/ModuleInfo.kt b/compiler/frontend.common/src/org/jetbrains/kotlin/analyzer/ModuleInfo.kt new file mode 100644 index 00000000000..66abc67b476 --- /dev/null +++ b/compiler/frontend.common/src/org/jetbrains/kotlin/analyzer/ModuleInfo.kt @@ -0,0 +1,39 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.analyzer + +import org.jetbrains.kotlin.descriptors.ModuleDescriptor +import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.resolve.TargetPlatform + + +interface ModuleInfo { + val name: Name + val displayedName: String get() = name.asString() + fun dependencies(): List + val expectedBy: List get() = emptyList() + val platform: TargetPlatform? get() = null + fun modulesWhoseInternalsAreVisible(): Collection = listOf() + val capabilities: Map, Any?> + get() = mapOf(Capability to this) + val stableName: Name? + get() = null + + // For common modules, we add built-ins at the beginning of the dependencies list, after the SDK. + // This is needed because if a JVM module depends on the common module, we should use JVM built-ins for resolution of both modules. + // The common module usually depends on kotlin-stdlib-common which may or may not have its own (common, non-JVM) built-ins, + // but if they are present, they should come after JVM built-ins in the dependencies list, because JVM built-ins contain + // additional members dependent on the JDK + fun dependencyOnBuiltIns(): ModuleInfo.DependencyOnBuiltIns = + platform?.dependencyOnBuiltIns() ?: ModuleInfo.DependencyOnBuiltIns.LAST + + //TODO: (module refactoring) provide dependency on builtins after runtime in IDEA + enum class DependencyOnBuiltIns { NONE, AFTER_SDK, LAST } + + companion object { + val Capability = ModuleDescriptor.Capability("ModuleInfo") + } +} diff --git a/compiler/frontend.common/src/org/jetbrains/kotlin/resolve/TargetPlatform.kt b/compiler/frontend.common/src/org/jetbrains/kotlin/resolve/TargetPlatform.kt new file mode 100644 index 00000000000..e5341cf1739 --- /dev/null +++ b/compiler/frontend.common/src/org/jetbrains/kotlin/resolve/TargetPlatform.kt @@ -0,0 +1,83 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.resolve + +import org.jetbrains.kotlin.analyzer.ModuleInfo +import org.jetbrains.kotlin.config.* +import org.jetbrains.kotlin.container.StorageComponentContainer +import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.storage.LockBasedStorageManager +import org.jetbrains.kotlin.storage.StorageManager +import java.util.* + +abstract class TargetPlatform(val platformName: String) { + private data class DefaultImportsKey(val includeKotlinComparisons: Boolean, val includeLowPriorityImports: Boolean) + + private val defaultImports = LockBasedStorageManager().let { storageManager -> + storageManager.createMemoizedFunction> { (includeKotlinComparisons, includeLowPriorityImports) -> + ArrayList().apply { + listOf( + "kotlin.*", + "kotlin.annotation.*", + "kotlin.collections.*", + "kotlin.ranges.*", + "kotlin.sequences.*", + "kotlin.text.*", + "kotlin.io.*" + ).forEach { add(ImportPath.fromString(it)) } + + if (includeKotlinComparisons) { + add(ImportPath.fromString("kotlin.comparisons.*")) + } + + computePlatformSpecificDefaultImports(storageManager, this) + + if (includeLowPriorityImports) { + addAll(defaultLowPriorityImports) + } + } + } + } + + override fun toString() = platformName + + abstract val platformConfigurator: PlatformConfigurator + + open val defaultLowPriorityImports: List get() = emptyList() + + fun getDefaultImports(languageVersionSettings: LanguageVersionSettings, includeLowPriorityImports: Boolean): List = + defaultImports( + DefaultImportsKey( + languageVersionSettings.supportsFeature(LanguageFeature.DefaultImportOfPackageKotlinComparisons), + includeLowPriorityImports + ) + ) + + protected abstract fun computePlatformSpecificDefaultImports(storageManager: StorageManager, result: MutableList) + + open val excludedImports: List get() = emptyList() + + abstract val multiTargetPlatform: MultiTargetPlatform + + // This function is used in "cat.helm.clean:0.1.1-SNAPSHOT": https://plugins.jetbrains.com/plugin/index?xmlId=cat.helm.clean + @Suppress("DeprecatedCallableAddReplaceWith", "unused") + @Deprecated("Use getDefaultImports(LanguageVersionSettings, Boolean) instead.", level = DeprecationLevel.ERROR) + fun getDefaultImports(includeKotlinComparisons: Boolean): List { + return getDefaultImports( + if (includeKotlinComparisons) LanguageVersionSettingsImpl.DEFAULT + else LanguageVersionSettingsImpl(LanguageVersion.KOTLIN_1_0, ApiVersion.KOTLIN_1_0), + true + ) + } + + open fun dependencyOnBuiltIns(): ModuleInfo.DependencyOnBuiltIns = ModuleInfo.DependencyOnBuiltIns.LAST +} + +interface PlatformConfigurator { + val platformSpecificContainer: StorageComponentContainer + fun configureModuleComponents(container: StorageComponentContainer) + fun configureModuleDependentCheckers(container: StorageComponentContainer) +} diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatformConfigurator.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatformConfigurator.kt index a753a002a2d..898c7fbaacc 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatformConfigurator.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatformConfigurator.kt @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.container.useImpl import org.jetbrains.kotlin.container.useInstance import org.jetbrains.kotlin.load.java.sam.JvmSamConversionTransformer import org.jetbrains.kotlin.load.java.sam.SamConversionResolverImpl -import org.jetbrains.kotlin.resolve.PlatformConfigurator +import org.jetbrains.kotlin.resolve.PlatformConfiguratorBase import org.jetbrains.kotlin.resolve.calls.checkers.ReifiedTypeParameterSubstitutionChecker import org.jetbrains.kotlin.resolve.checkers.BigFunctionTypeAvailabilityChecker import org.jetbrains.kotlin.resolve.checkers.ExpectedActualDeclarationChecker @@ -22,7 +22,7 @@ import org.jetbrains.kotlin.synthetic.JavaSyntheticScopes import org.jetbrains.kotlin.types.DynamicTypesSettings import org.jetbrains.kotlin.types.expressions.FunctionWithBigAritySupport -object JvmPlatformConfigurator : PlatformConfigurator( +object JvmPlatformConfigurator : PlatformConfiguratorBase( DynamicTypesSettings(), additionalDeclarationCheckers = listOf( JvmNameAnnotationChecker(), diff --git a/compiler/frontend/build.gradle.kts b/compiler/frontend/build.gradle.kts index 21f211e45ff..44628fe3457 100644 --- a/compiler/frontend/build.gradle.kts +++ b/compiler/frontend/build.gradle.kts @@ -14,6 +14,7 @@ dependencies { compile(project(":compiler:container")) compile(project(":compiler:resolution")) compile(project(":compiler:psi")) + compile(project(":compiler:frontend.common")) compile(project(":kotlin-script-runtime")) compile(commonDep("io.javaslang","javaslang")) compileOnly(intellijCoreDep()) { includeJars("intellij-core") } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt index d30b748cea5..40da3f057ce 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt @@ -278,37 +278,6 @@ interface PlatformAnalysisParameters { object Empty : PlatformAnalysisParameters } -interface ModuleInfo { - val name: Name - val displayedName: String get() = name.asString() - fun dependencies(): List - val expectedBy: List get() = emptyList() - val platform: TargetPlatform? get() = null - fun modulesWhoseInternalsAreVisible(): Collection = listOf() - val capabilities: Map, Any?> - get() = mapOf(Capability to this) - val stableName: Name? - get() = null - - // For common modules, we add built-ins at the beginning of the dependencies list, after the SDK. - // This is needed because if a JVM module depends on the common module, we should use JVM built-ins for resolution of both modules. - // The common module usually depends on kotlin-stdlib-common which may or may not have its own (common, non-JVM) built-ins, - // but if they are present, they should come after JVM built-ins in the dependencies list, because JVM built-ins contain - // additional members dependent on the JDK - fun dependencyOnBuiltIns(): ModuleInfo.DependencyOnBuiltIns = - if (platform == TargetPlatform.Common) - ModuleInfo.DependencyOnBuiltIns.AFTER_SDK - else - ModuleInfo.DependencyOnBuiltIns.LAST - - //TODO: (module refactoring) provide dependency on builtins after runtime in IDEA - enum class DependencyOnBuiltIns { NONE, AFTER_SDK, LAST } - - companion object { - val Capability = ModuleDescriptor.Capability("ModuleInfo") - } -} - interface CombinedModuleInfo : ModuleInfo { val containedModules: List } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonAnalyzerFacade.kt b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonAnalyzerFacade.kt index 8e088978b0a..a29f89543f6 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonAnalyzerFacade.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonAnalyzerFacade.kt @@ -52,7 +52,7 @@ class CommonAnalysisParameters( /** * A facade that is used to analyze common (platform-independent) modules in multi-platform projects. - * See [TargetPlatform.Common] + * See [CommonPlatform] */ object CommonAnalyzerFacade : ResolverForModuleFactory() { private class SourceModuleInfo( @@ -176,5 +176,5 @@ object CommonAnalyzerFacade : ResolverForModuleFactory() { } override val targetPlatform: TargetPlatform - get() = TargetPlatform.Common + get() = CommonPlatform } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonPlatform.kt b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonPlatform.kt new file mode 100644 index 00000000000..942cc57a8fc --- /dev/null +++ b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonPlatform.kt @@ -0,0 +1,43 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.analyzer.common + +import org.jetbrains.kotlin.analyzer.ModuleInfo +import org.jetbrains.kotlin.builtins.PlatformToKotlinClassMap +import org.jetbrains.kotlin.container.StorageComponentContainer +import org.jetbrains.kotlin.container.useInstance +import org.jetbrains.kotlin.resolve.* +import org.jetbrains.kotlin.resolve.calls.components.SamConversionTransformer +import org.jetbrains.kotlin.resolve.calls.results.TypeSpecificityComparator +import org.jetbrains.kotlin.resolve.lazy.DelegationFilter +import org.jetbrains.kotlin.resolve.scopes.SyntheticScopes +import org.jetbrains.kotlin.storage.StorageManager +import org.jetbrains.kotlin.types.DynamicTypesSettings + +object CommonPlatform : TargetPlatform("Default") { + override fun computePlatformSpecificDefaultImports(storageManager: StorageManager, result: MutableList) {} + + override val multiTargetPlatform: MultiTargetPlatform + get() = MultiTargetPlatform.Common + + override val platformConfigurator: PlatformConfigurator = CommonPlatformConfigurator + + override fun dependencyOnBuiltIns(): ModuleInfo.DependencyOnBuiltIns = ModuleInfo.DependencyOnBuiltIns.AFTER_SDK +} + +private object CommonPlatformConfigurator : PlatformConfiguratorBase( + DynamicTypesSettings(), listOf(), listOf(), listOf(), listOf(), listOf(), + IdentifierChecker.Default, OverloadFilter.Default, PlatformToKotlinClassMap.EMPTY, DelegationFilter.Default, + OverridesBackwardCompatibilityHelper.Default, + DeclarationReturnTypeSanitizer.Default +) { + override fun configureModuleComponents(container: StorageComponentContainer) { + container.useInstance(SyntheticScopes.Empty) + container.useInstance(SamConversionTransformer.Empty) + container.useInstance(TypeSpecificityComparator.NONE) + } +} + diff --git a/compiler/frontend/src/org/jetbrains/kotlin/frontend/di/injection.kt b/compiler/frontend/src/org/jetbrains/kotlin/frontend/di/injection.kt index 277e9b86738..7e72161793d 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/frontend/di/injection.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/frontend/di/injection.kt @@ -16,6 +16,7 @@ package org.jetbrains.kotlin.frontend.di +import org.jetbrains.kotlin.analyzer.common.CommonPlatform import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl import org.jetbrains.kotlin.config.TargetPlatformVersion @@ -181,7 +182,7 @@ fun createLazyResolveSession(moduleContext: ModuleContext, files: Collection - storageManager.createMemoizedFunction> { (includeKotlinComparisons, includeLowPriorityImports) -> - ArrayList().apply { - listOf( - "kotlin.*", - "kotlin.annotation.*", - "kotlin.collections.*", - "kotlin.ranges.*", - "kotlin.sequences.*", - "kotlin.text.*", - "kotlin.io.*" - ).forEach { add(ImportPath.fromString(it)) } - - if (includeKotlinComparisons) { - add(ImportPath.fromString("kotlin.comparisons.*")) - } - - computePlatformSpecificDefaultImports(storageManager, this) - - if (includeLowPriorityImports) { - addAll(defaultLowPriorityImports) - } - } - } - } - - override fun toString() = platformName - - abstract val platformConfigurator: PlatformConfigurator - - open val defaultLowPriorityImports: List get() = emptyList() - - fun getDefaultImports(languageVersionSettings: LanguageVersionSettings, includeLowPriorityImports: Boolean): List = - defaultImports( - DefaultImportsKey( - languageVersionSettings.supportsFeature(LanguageFeature.DefaultImportOfPackageKotlinComparisons), - includeLowPriorityImports - ) - ) - - protected abstract fun computePlatformSpecificDefaultImports(storageManager: StorageManager, result: MutableList) - - open val excludedImports: List get() = emptyList() - - abstract val multiTargetPlatform: MultiTargetPlatform - - // This function is used in "cat.helm.clean:0.1.1-SNAPSHOT": https://plugins.jetbrains.com/plugin/index?xmlId=cat.helm.clean - @Suppress("DeprecatedCallableAddReplaceWith") - @Deprecated("Use getDefaultImports(LanguageVersionSettings, Boolean) instead.", level = DeprecationLevel.ERROR) - fun getDefaultImports(includeKotlinComparisons: Boolean): List { - return getDefaultImports( - if (includeKotlinComparisons) LanguageVersionSettingsImpl.DEFAULT - else LanguageVersionSettingsImpl(LanguageVersion.KOTLIN_1_0, ApiVersion.KOTLIN_1_0), - true - ) - } - - object Common : TargetPlatform("Default") { - override fun computePlatformSpecificDefaultImports(storageManager: StorageManager, result: MutableList) {} - - override val platformConfigurator = - object : PlatformConfigurator( - DynamicTypesSettings(), listOf(), listOf(), listOf(), listOf(), listOf(), - IdentifierChecker.Default, OverloadFilter.Default, PlatformToKotlinClassMap.EMPTY, DelegationFilter.Default, - OverridesBackwardCompatibilityHelper.Default, - DeclarationReturnTypeSanitizer.Default - ) { - override fun configureModuleComponents(container: StorageComponentContainer) { - container.useInstance(SyntheticScopes.Empty) - container.useInstance(SamConversionTransformer.Empty) - container.useInstance(TypeSpecificityComparator.NONE) - } - } - - override val multiTargetPlatform: MultiTargetPlatform - get() = MultiTargetPlatform.Common - } -} private val DEFAULT_DECLARATION_CHECKERS = listOf( DataClassDeclarationChecker(), @@ -143,7 +54,7 @@ private val DEFAULT_CLASSIFIER_USAGE_CHECKERS = listOf( private val DEFAULT_ANNOTATION_CHECKERS = listOf() -abstract class PlatformConfigurator( +abstract class PlatformConfiguratorBase( private val dynamicTypesSettings: DynamicTypesSettings, additionalDeclarationCheckers: List, additionalCallCheckers: List, @@ -156,7 +67,7 @@ abstract class PlatformConfigurator( private val delegationFilter: DelegationFilter, private val overridesBackwardCompatibilityHelper: OverridesBackwardCompatibilityHelper, private val declarationReturnTypeSanitizer: DeclarationReturnTypeSanitizer -) { +) : PlatformConfigurator { private val declarationCheckers: List = DEFAULT_DECLARATION_CHECKERS + additionalDeclarationCheckers private val callCheckers: List = DEFAULT_CALL_CHECKERS + additionalCallCheckers private val typeCheckers: List = DEFAULT_TYPE_CHECKERS + additionalTypeCheckers @@ -164,9 +75,7 @@ abstract class PlatformConfigurator( DEFAULT_CLASSIFIER_USAGE_CHECKERS + additionalClassifierUsageCheckers private val annotationCheckers: List = DEFAULT_ANNOTATION_CHECKERS + additionalAnnotationCheckers - abstract fun configureModuleComponents(container: StorageComponentContainer) - - val platformSpecificContainer = composeContainer(this::class.java.simpleName) { + override val platformSpecificContainer = composeContainer(this::class.java.simpleName) { useInstance(dynamicTypesSettings) declarationCheckers.forEach { useInstance(it) } callCheckers.forEach { useInstance(it) } @@ -181,7 +90,7 @@ abstract class PlatformConfigurator( useInstance(declarationReturnTypeSanitizer) } - fun configureModuleDependentCheckers(container: StorageComponentContainer) { + override fun configureModuleDependentCheckers(container: StorageComponentContainer) { container.useImpl() } } diff --git a/idea/build.gradle.kts b/idea/build.gradle.kts index 93049ec5c01..e43ac95e229 100644 --- a/idea/build.gradle.kts +++ b/idea/build.gradle.kts @@ -19,6 +19,7 @@ dependencies { compile(project(":compiler:backend")) compile(project(":compiler:cli-common")) compile(project(":compiler:frontend")) + compile(project(":compiler:frontend.common")) compile(project(":compiler:frontend.java")) compile(project(":compiler:frontend.script")) compile(project(":js:js.frontend")) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/LibraryDependenciesCache.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/LibraryDependenciesCache.kt index 7d4af2d999f..5535323f7cf 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/LibraryDependenciesCache.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/LibraryDependenciesCache.kt @@ -17,6 +17,7 @@ import com.intellij.psi.util.CachedValueProvider import com.intellij.psi.util.CachedValuesManager import com.intellij.util.containers.ContainerUtil import com.intellij.util.containers.MultiMap +import org.jetbrains.kotlin.analyzer.common.CommonPlatform import org.jetbrains.kotlin.idea.core.util.CachedValue import org.jetbrains.kotlin.idea.core.util.getValue import org.jetbrains.kotlin.idea.framework.getLibraryPlatform @@ -91,7 +92,7 @@ class LibraryDependenciesCacheImpl(private val project: Project) : LibraryDepend * @return true if it's OK to add a dependency from a library with platform [from] to a library with platform [to] */ private fun compatiblePlatforms(from: TargetPlatform, to: TargetPlatform): Boolean { - return from == to || to == TargetPlatform.Common + return from == to || to is CommonPlatform } private fun getLibraryUsageIndex(): LibraryUsageIndex { diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/moduleInfosFromIdeaModel.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/moduleInfosFromIdeaModel.kt index 8d81d6cfb01..9832374557b 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/moduleInfosFromIdeaModel.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/moduleInfosFromIdeaModel.kt @@ -15,6 +15,7 @@ import com.intellij.openapi.roots.LibraryOrderEntry import com.intellij.openapi.roots.ModuleRootManager import com.intellij.openapi.roots.ProjectRootModificationTracker import com.intellij.psi.util.CachedValueProvider +import org.jetbrains.kotlin.analyzer.common.CommonPlatform import org.jetbrains.kotlin.resolve.TargetPlatform import java.util.concurrent.ConcurrentHashMap @@ -69,7 +70,7 @@ private fun mergePlatformModules( allModules: List, platform: TargetPlatform ): List { - if (platform == TargetPlatform.Common) return allModules + if (platform is CommonPlatform) return allModules val platformModules = allModules.flatMap { module -> diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/multiplatformUtil.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/multiplatformUtil.kt index 6f3e3d51be8..ead92da97a7 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/multiplatformUtil.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/multiplatformUtil.kt @@ -14,6 +14,7 @@ import com.intellij.openapi.roots.ProjectRootModificationTracker import com.intellij.psi.PsiElement import com.intellij.psi.util.CachedValueProvider import org.jetbrains.kotlin.analyzer.ModuleInfo +import org.jetbrains.kotlin.analyzer.common.CommonPlatform import org.jetbrains.kotlin.caches.resolve.KotlinCacheService import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.idea.caches.project.SourceType.PRODUCTION @@ -118,10 +119,10 @@ private fun ModuleSourceInfo.toDescriptor() = KotlinCacheService.getInstance(mod .getResolutionFacadeByModuleInfo(this, platform)?.moduleDescriptor fun PsiElement.getPlatformModuleInfo(desiredPlatform: TargetPlatform): PlatformModuleInfo? { - assert(desiredPlatform != TargetPlatform.Common) { "Platform module cannot have Common platform" } + assert(desiredPlatform !is CommonPlatform) { "Platform module cannot have Common platform" } val moduleInfo = getNullableModuleInfo() as? ModuleSourceInfo ?: return null return when (moduleInfo.platform) { - TargetPlatform.Common -> { + is CommonPlatform -> { val correspondingImplementingModule = moduleInfo.module.implementingModules.map { it.toInfo(moduleInfo.sourceType) } .firstOrNull { it?.platform == desiredPlatform } ?: return null PlatformModuleInfo(correspondingImplementingModule, correspondingImplementingModule.expectedBy) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ProjectResolutionFacade.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ProjectResolutionFacade.kt index d9541dd5172..3e41c9ef4cb 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ProjectResolutionFacade.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ProjectResolutionFacade.kt @@ -25,6 +25,7 @@ import com.intellij.psi.util.PsiModificationTracker import com.intellij.util.containers.SLRUCache import org.jetbrains.kotlin.analyzer.* import org.jetbrains.kotlin.analyzer.common.CommonAnalysisParameters +import org.jetbrains.kotlin.analyzer.common.CommonPlatform import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.builtins.jvm.JvmBuiltIns import org.jetbrains.kotlin.caches.resolve.resolution @@ -147,7 +148,7 @@ internal class ProjectResolutionFacade( platformParameters = { platform -> when (platform) { is JvmPlatform -> jvmPlatformParameters - is TargetPlatform.Common -> commonPlatformParameters + is CommonPlatform -> commonPlatformParameters else -> PlatformAnalysisParameters.Empty } }, diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/builtIns/KotlinBuiltInDecompiler.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/builtIns/KotlinBuiltInDecompiler.kt index e834f138f76..6a665226438 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/builtIns/KotlinBuiltInDecompiler.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/builtIns/KotlinBuiltInDecompiler.kt @@ -19,13 +19,13 @@ package org.jetbrains.kotlin.idea.decompiler.builtIns import com.intellij.ide.highlighter.JavaClassFileType import com.intellij.openapi.vfs.VirtualFile import org.jetbrains.annotations.TestOnly +import org.jetbrains.kotlin.analyzer.common.CommonPlatform import org.jetbrains.kotlin.idea.decompiler.common.FileWithMetadata import org.jetbrains.kotlin.idea.decompiler.common.KotlinMetadataDecompiler import org.jetbrains.kotlin.metadata.ProtoBuf import org.jetbrains.kotlin.metadata.builtins.BuiltInsBinaryVersion import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.psi.stubs.KotlinStubVersions -import org.jetbrains.kotlin.resolve.TargetPlatform import org.jetbrains.kotlin.serialization.deserialization.FlexibleTypeDeserializer import org.jetbrains.kotlin.serialization.deserialization.MetadataPackageFragment import org.jetbrains.kotlin.serialization.deserialization.builtins.BuiltInSerializerProtocol @@ -33,9 +33,9 @@ import org.jetbrains.kotlin.serialization.deserialization.getClassId import java.io.ByteArrayInputStream class KotlinBuiltInDecompiler : KotlinMetadataDecompiler( - KotlinBuiltInFileType, TargetPlatform.Common, BuiltInSerializerProtocol, - FlexibleTypeDeserializer.ThrowException, BuiltInsBinaryVersion.INSTANCE, BuiltInsBinaryVersion.INVALID_VERSION, - KotlinStubVersions.BUILTIN_STUB_VERSION + KotlinBuiltInFileType, CommonPlatform, BuiltInSerializerProtocol, + FlexibleTypeDeserializer.ThrowException, BuiltInsBinaryVersion.INSTANCE, BuiltInsBinaryVersion.INVALID_VERSION, + KotlinStubVersions.BUILTIN_STUB_VERSION ) { override fun readFile(bytes: ByteArray, file: VirtualFile): FileWithMetadata? { return BuiltInDefinitionFile.read(bytes, file) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt index e54c5328be9..a66dfc57676 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/navigation/SourceNavigationHelper.kt @@ -18,6 +18,7 @@ import com.intellij.psi.stubs.StringStubIndexExtension import com.intellij.util.containers.ContainerUtil import gnu.trove.THashSet import org.jetbrains.annotations.TestOnly +import org.jetbrains.kotlin.analyzer.common.CommonPlatform import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.idea.caches.project.BinaryModuleInfo import org.jetbrains.kotlin.idea.caches.project.getBinaryLibrariesModuleInfos @@ -75,10 +76,10 @@ object SourceNavigationHelper { private fun BinaryModuleInfo.associatedCommonLibraries(): List { val platform = platform - if (platform == null || platform == TargetPlatform.Common) return emptyList() + if (platform == null || platform is CommonPlatform) return emptyList() return dependencies().filterIsInstance().filter { - it.platform == TargetPlatform.Common + it.platform is CommonPlatform } } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/framework/LibraryKinds.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/framework/LibraryKinds.kt index 6ba79949086..8674f87ea29 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/framework/LibraryKinds.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/framework/LibraryKinds.kt @@ -24,6 +24,7 @@ import com.intellij.openapi.roots.libraries.Library import com.intellij.openapi.roots.libraries.PersistentLibraryKind import com.intellij.openapi.util.io.JarUtil import com.intellij.openapi.vfs.* +import org.jetbrains.kotlin.analyzer.common.CommonPlatform import org.jetbrains.kotlin.caches.resolve.IdePlatformKindResolution import org.jetbrains.kotlin.caches.resolve.resolution import org.jetbrains.kotlin.idea.vfilefinder.KnownLibraryKindForIndex @@ -49,7 +50,7 @@ object JSLibraryKind : PersistentLibraryKind("kotlin.js" object CommonLibraryKind : PersistentLibraryKind("kotlin.common"), KotlinLibraryKind { override val compilerPlatform: TargetPlatform - get() = TargetPlatform.Common + get() = CommonPlatform override fun createDefaultProperties() = DummyLibraryProperties.INSTANCE!! } diff --git a/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/impl/CommonIdePlatformKind.kt b/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/impl/CommonIdePlatformKind.kt index a04bddf8f77..379b4944076 100644 --- a/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/impl/CommonIdePlatformKind.kt +++ b/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/impl/CommonIdePlatformKind.kt @@ -6,12 +6,12 @@ @file:JvmName("CommonIdePlatformUtil") package org.jetbrains.kotlin.platform.impl +import org.jetbrains.kotlin.analyzer.common.CommonPlatform import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments import org.jetbrains.kotlin.cli.common.arguments.K2MetadataCompilerArguments import org.jetbrains.kotlin.config.TargetPlatformVersion import org.jetbrains.kotlin.platform.IdePlatform import org.jetbrains.kotlin.platform.IdePlatformKind -import org.jetbrains.kotlin.resolve.TargetPlatform object CommonIdePlatformKind : IdePlatformKind() { @@ -20,7 +20,7 @@ object CommonIdePlatformKind : IdePlatformKind() { else null } - override val compilerPlatform get() = TargetPlatform.Common + override val compilerPlatform get() = CommonPlatform override val platforms get() = listOf(Platform) override val defaultPlatform get() = Platform diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/internal/KotlinBytecodeToolWindow.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/internal/KotlinBytecodeToolWindow.kt index d023523059d..c245d397341 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/internal/KotlinBytecodeToolWindow.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/internal/KotlinBytecodeToolWindow.kt @@ -21,6 +21,7 @@ import com.intellij.openapi.util.Pair import com.intellij.openapi.util.text.StringUtil import com.intellij.openapi.wm.ToolWindow import com.intellij.util.Alarm +import org.jetbrains.kotlin.analyzer.common.CommonPlatform import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory import org.jetbrains.kotlin.caches.resolve.KotlinCacheService import org.jetbrains.kotlin.codegen.ClassBuilderFactories @@ -39,7 +40,6 @@ import org.jetbrains.kotlin.idea.util.ProjectRootsUtil import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtScript -import org.jetbrains.kotlin.resolve.TargetPlatform import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform import org.jetbrains.kotlin.utils.join import java.awt.BorderLayout @@ -277,7 +277,7 @@ class KotlinBytecodeToolWindow(private val myProject: Project, private val toolW configuration: CompilerConfiguration ): GenerationState? { val platform = ktFile.platform - if (platform != TargetPlatform.Common && platform != JvmPlatform) return null + if (platform !is CommonPlatform && platform !is JvmPlatform) return null val resolutionFacade = KotlinCacheService.getInstance(ktFile.project) .getResolutionFacadeByFile(ktFile, JvmPlatform) diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsAndHashcodeAction.kt b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsAndHashcodeAction.kt index 220fc0f8b48..b3a4a3f8746 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsAndHashcodeAction.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsAndHashcodeAction.kt @@ -23,6 +23,7 @@ import com.intellij.openapi.editor.Editor import com.intellij.openapi.project.Project import com.intellij.psi.PsiNameIdentifierOwner import com.intellij.util.IncorrectOperationException +import org.jetbrains.kotlin.analyzer.common.CommonPlatform import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.config.ApiVersion import org.jetbrains.kotlin.config.LanguageFeature @@ -44,7 +45,6 @@ import org.jetbrains.kotlin.psi.psiUtil.getElementTextWithContext import org.jetbrains.kotlin.psi.psiUtil.hasExpectModifier import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded import org.jetbrains.kotlin.resolve.BindingContext -import org.jetbrains.kotlin.resolve.TargetPlatform import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassOrAny import org.jetbrains.kotlin.resolve.source.getPsi @@ -133,7 +133,7 @@ class KotlinGenerateEqualsAndHashcodeAction : KotlinGenerateMemberActionBase "other == null || this::class.js != $paramName::class.js" - is TargetPlatform.Common -> "other == null || this::class != $paramName::class" + is CommonPlatform -> "other == null || this::class != $paramName::class" else -> defaultExpression } } @@ -143,7 +143,7 @@ class KotlinGenerateEqualsAndHashcodeAction : KotlinGenerateMemberActionBase "this::class.js" - is TargetPlatform.Common -> "this::class" + is CommonPlatform -> "this::class" else -> defaultExpression } } diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/PlatformExpectedAnnotator.kt b/idea/src/org/jetbrains/kotlin/idea/highlighter/PlatformExpectedAnnotator.kt index 19544f60e6d..3b08af676cf 100644 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/PlatformExpectedAnnotator.kt +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/PlatformExpectedAnnotator.kt @@ -19,6 +19,7 @@ package org.jetbrains.kotlin.idea.highlighter import com.intellij.lang.annotation.AnnotationHolder import com.intellij.lang.annotation.Annotator import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.analyzer.common.CommonPlatform import org.jetbrains.kotlin.caches.resolve.KotlinCacheService import org.jetbrains.kotlin.descriptors.MemberDescriptor import org.jetbrains.kotlin.idea.caches.project.implementingDescriptors @@ -32,7 +33,6 @@ import org.jetbrains.kotlin.psi.KtNamedDeclaration import org.jetbrains.kotlin.psi.KtPsiUtil import org.jetbrains.kotlin.psi.psiUtil.hasExpectModifier import org.jetbrains.kotlin.resolve.BindingTraceContext -import org.jetbrains.kotlin.resolve.TargetPlatform import org.jetbrains.kotlin.resolve.checkers.ExpectedActualDeclarationChecker import org.jetbrains.kotlin.resolve.diagnostics.SimpleDiagnostics import org.jetbrains.kotlin.resolve.jvm.multiplatform.JavaActualAnnotationArgumentExtractor @@ -42,7 +42,7 @@ class PlatformExpectedAnnotator : Annotator { val declaration = element as? KtNamedDeclaration ?: return if (!isExpectedDeclaration(declaration)) return - if (TargetPlatformDetector.getPlatform(declaration.containingKtFile) !is TargetPlatform.Common) return + if (TargetPlatformDetector.getPlatform(declaration.containingKtFile) !is CommonPlatform) return val implementingModules = declaration.findModuleDescriptor().implementingDescriptors if (implementingModules.isEmpty()) return diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertCamelCaseTestFunctionToSpacedIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertCamelCaseTestFunctionToSpacedIntention.kt index 288a640836e..bfdb3041252 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertCamelCaseTestFunctionToSpacedIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertCamelCaseTestFunctionToSpacedIntention.kt @@ -27,13 +27,13 @@ import com.intellij.openapi.editor.Editor import com.intellij.openapi.util.TextRange import com.intellij.psi.PsiDocumentManager import com.intellij.refactoring.rename.RenameProcessor +import org.jetbrains.kotlin.analyzer.common.CommonPlatform import org.jetbrains.kotlin.asJava.toLightMethods import org.jetbrains.kotlin.idea.project.platform import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.js.resolve.JsPlatform import org.jetbrains.kotlin.psi.KtNamedFunction import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded -import org.jetbrains.kotlin.resolve.TargetPlatform import org.jetbrains.kotlin.util.capitalizeDecapitalize.decapitalizeSmart import org.jetbrains.kotlin.utils.SmartList @@ -42,7 +42,7 @@ class ConvertCamelCaseTestFunctionToSpacedIntention : SelfTargetingRangeIntentio ) { override fun applicabilityRange(element: KtNamedFunction): TextRange? { val platform = element.platform - if (platform == TargetPlatform.Common || platform == JsPlatform) return null + if (platform is CommonPlatform || platform is JsPlatform) return null val range = element.nameIdentifier?.textRange ?: return null val name = element.name ?: return null diff --git a/idea/src/org/jetbrains/kotlin/idea/roots/KotlinNonJvmSourceRootConverterProvider.kt b/idea/src/org/jetbrains/kotlin/idea/roots/KotlinNonJvmSourceRootConverterProvider.kt index 84b49f34c0a..bbea115931d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/roots/KotlinNonJvmSourceRootConverterProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/roots/KotlinNonJvmSourceRootConverterProvider.kt @@ -32,6 +32,7 @@ import org.jetbrains.jps.model.module.JpsTypedModuleSourceRoot import org.jetbrains.jps.model.serialization.facet.JpsFacetSerializer import org.jetbrains.jps.model.serialization.module.JpsModuleRootModelSerializer import org.jetbrains.jps.model.serialization.module.JpsModuleRootModelSerializer.* +import org.jetbrains.kotlin.analyzer.common.CommonPlatform import org.jetbrains.kotlin.config.getFacetPlatformByConfigurationElement import org.jetbrains.kotlin.idea.facet.KotlinFacetType import org.jetbrains.kotlin.idea.framework.* @@ -54,7 +55,7 @@ class KotlinNonJvmSourceRootConverterProvider : ConverterProvider("kotlin-non-jv get() = when (this) { is JvmPlatform -> { roots -> JavaRuntimeDetectionUtil.getRuntimeJar(roots.toList()) != null } is JsPlatform -> { roots -> JsLibraryStdDetectionUtil.getJsStdLibJar(roots.toList()) != null } - is TargetPlatform.Common -> { roots -> getLibraryJar(roots, PathUtil.KOTLIN_STDLIB_COMMON_JAR_PATTERN) != null } + is CommonPlatform -> { roots -> getLibraryJar(roots, PathUtil.KOTLIN_STDLIB_COMMON_JAR_PATTERN) != null } else -> null } } @@ -148,7 +149,7 @@ class KotlinNonJvmSourceRootConverterProvider : ConverterProvider("kotlin-non-jv .forEach { val platform = it.platform when (platform) { - is TargetPlatform.Common -> { + is CommonPlatform -> { if (!hasCommonStdlib && it.isStdlib) { hasCommonStdlib = true } @@ -160,7 +161,7 @@ class KotlinNonJvmSourceRootConverterProvider : ConverterProvider("kotlin-non-jv } } - return if (hasCommonStdlib) TargetPlatform.Common else null + return if (hasCommonStdlib) CommonPlatform else null } private fun ModuleSettings.detectPlatform(): TargetPlatform { diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/generate/AbstractCodeInsightActionTest.kt b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/generate/AbstractCodeInsightActionTest.kt index 92eeadaaca0..264a68e305c 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/generate/AbstractCodeInsightActionTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/generate/AbstractCodeInsightActionTest.kt @@ -25,6 +25,7 @@ import com.intellij.testFramework.PlatformTestUtil import com.intellij.testFramework.TestActionEvent import junit.framework.ComparisonFailure import junit.framework.TestCase +import org.jetbrains.kotlin.analyzer.common.CommonPlatform import org.jetbrains.kotlin.idea.project.forcedTargetPlatform import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase @@ -91,7 +92,7 @@ abstract class AbstractCodeInsightActionTest : KotlinLightCodeInsightFixtureTest val targetPlatform = when (targetPlatformName) { "JVM" -> JvmPlatform "JavaScript" -> JsPlatform - "Common" -> TargetPlatform.Common + "Common" -> CommonPlatform else -> error("Unexpected platform name: $targetPlatformName") } mainPsiFile.forcedTargetPlatform = targetPlatform diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsPlatformConfigurator.kt b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsPlatformConfigurator.kt index cb6ede53b78..a75eee8f7a9 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsPlatformConfigurator.kt +++ b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsPlatformConfigurator.kt @@ -26,7 +26,7 @@ import org.jetbrains.kotlin.js.resolve.diagnostics.* import org.jetbrains.kotlin.resolve.DeclarationReturnTypeSanitizer import org.jetbrains.kotlin.resolve.OverloadFilter import org.jetbrains.kotlin.resolve.OverridesBackwardCompatibilityHelper -import org.jetbrains.kotlin.resolve.PlatformConfigurator +import org.jetbrains.kotlin.resolve.* import org.jetbrains.kotlin.resolve.calls.checkers.ReifiedTypeParameterSubstitutionChecker import org.jetbrains.kotlin.resolve.calls.components.SamConversionTransformer import org.jetbrains.kotlin.resolve.checkers.ExpectedActualDeclarationChecker @@ -35,7 +35,7 @@ import org.jetbrains.kotlin.resolve.lazy.DelegationFilter import org.jetbrains.kotlin.resolve.scopes.SyntheticScopes import org.jetbrains.kotlin.types.DynamicTypesAllowed -object JsPlatformConfigurator : PlatformConfigurator( +object JsPlatformConfigurator : PlatformConfiguratorBase( DynamicTypesAllowed(), additionalDeclarationCheckers = listOf( NativeInvokeChecker(), NativeGetterChecker(), NativeSetterChecker(), diff --git a/konan/library-reader/src/org/jetbrains/kotlin/resolve/konan/platform/KonanPlatformConfigurator.kt b/konan/library-reader/src/org/jetbrains/kotlin/resolve/konan/platform/KonanPlatformConfigurator.kt index 26aad52348a..d84a68f3254 100644 --- a/konan/library-reader/src/org/jetbrains/kotlin/resolve/konan/platform/KonanPlatformConfigurator.kt +++ b/konan/library-reader/src/org/jetbrains/kotlin/resolve/konan/platform/KonanPlatformConfigurator.kt @@ -17,7 +17,7 @@ import org.jetbrains.kotlin.resolve.lazy.DelegationFilter import org.jetbrains.kotlin.resolve.scopes.SyntheticScopes import org.jetbrains.kotlin.types.DynamicTypesSettings -object KonanPlatformConfigurator : PlatformConfigurator( +object KonanPlatformConfigurator : PlatformConfiguratorBase( DynamicTypesSettings(), additionalDeclarationCheckers = listOf(ExpectedActualDeclarationChecker()), additionalCallCheckers = listOf( diff --git a/prepare/idea-plugin/build.gradle.kts b/prepare/idea-plugin/build.gradle.kts index 85cb428443a..34f54cd646b 100644 --- a/prepare/idea-plugin/build.gradle.kts +++ b/prepare/idea-plugin/build.gradle.kts @@ -40,6 +40,7 @@ val projectsToShadow by extra(listOf( emptyArray() }, ":compiler:frontend", + ":compiler:frontend.common", ":compiler:frontend.java", ":compiler:frontend.script", ":idea:ide-common", diff --git a/settings.gradle b/settings.gradle index bde4727e2bf..24785387644 100644 --- a/settings.gradle +++ b/settings.gradle @@ -35,6 +35,7 @@ include ":kotlin-build-common", ":compiler:fir:resolve", ":compiler:fir:java", ":compiler:frontend", + ":compiler:frontend.common", ":compiler:frontend.java", ":compiler:frontend.script", ":kotlin-compiler-runner", diff --git a/ultimate/build.gradle.kts b/ultimate/build.gradle.kts index 2a810bb241a..6b6b04aaf25 100644 --- a/ultimate/build.gradle.kts +++ b/ultimate/build.gradle.kts @@ -29,6 +29,7 @@ dependencies { compile(project(":core:util.runtime")) { isTransitive = false } compile(project(":compiler:light-classes")) { isTransitive = false } compile(project(":compiler:frontend")) { isTransitive = false } + compile(project(":compiler:frontend.common")) { isTransitive = false } compile(project(":compiler:frontend.java")) { isTransitive = false } compile(project(":compiler:util")) { isTransitive = false } compile(project(":js:js.frontend")) { isTransitive = false } diff --git a/ultimate/build.gradle.kts.173 b/ultimate/build.gradle.kts.173 index 1a06809772f..3a679ced9e7 100644 --- a/ultimate/build.gradle.kts.173 +++ b/ultimate/build.gradle.kts.173 @@ -29,6 +29,7 @@ dependencies { compile(project(":core:util.runtime")) { isTransitive = false } compile(project(":compiler:light-classes")) { isTransitive = false } compile(project(":compiler:frontend")) { isTransitive = false } + compile(project(":compiler:frontend.common")) { isTransitive = false } compile(project(":compiler:frontend.java")) { isTransitive = false } compile(project(":js:js.frontend")) { isTransitive = false } compile(projectClasses(":idea"))