diff --git a/.idea/copyright/apache.xml b/.idea/copyright/apache.xml
new file mode 100644
index 00000000000..445d6beaf9b
--- /dev/null
+++ b/.idea/copyright/apache.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/compiler/cli/cli-common/build.gradle.kts b/compiler/cli/cli-common/build.gradle.kts
index e8c39c71c69..e8d297f12a4 100644
--- a/compiler/cli/cli-common/build.gradle.kts
+++ b/compiler/cli/cli-common/build.gradle.kts
@@ -8,6 +8,7 @@ dependencies {
compile(project(":core:util.runtime"))
compile(project(":compiler:frontend"))
compile(project(":compiler:frontend.java"))
+ compile(project(":js:js.frontend"))
compileOnly(project(":kotlin-reflect-api"))
compileOnly(intellijCoreDep()) { includeJars("intellij-core") }
compileOnly(intellijDep()) { includeIntellijCoreJarDependencies(project) }
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonResolverForModuleFactory.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/analyzer/common/CommonResolverForModuleFactory.kt
similarity index 95%
rename from compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonResolverForModuleFactory.kt
rename to compiler/cli/cli-common/src/org/jetbrains/kotlin/analyzer/common/CommonResolverForModuleFactory.kt
index bb25599649f..41a9e01db2f 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonResolverForModuleFactory.kt
+++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/analyzer/common/CommonResolverForModuleFactory.kt
@@ -22,7 +22,7 @@ import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.analyzer.*
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.config.LanguageVersionSettings
-import org.jetbrains.kotlin.config.TargetPlatformVersion
+import org.jetbrains.kotlin.platform.TargetPlatformVersion
import org.jetbrains.kotlin.container.StorageComponentContainer
import org.jetbrains.kotlin.container.get
import org.jetbrains.kotlin.container.useImpl
@@ -38,6 +38,7 @@ import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.load.kotlin.MetadataFinderFactory
import org.jetbrains.kotlin.name.Name
+import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.*
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
@@ -72,7 +73,7 @@ object CommonResolverForModuleFactory : ResolverForModuleFactory() {
fun analyzeFiles(
files: Collection, moduleName: Name, dependOnBuiltIns: Boolean, languageVersionSettings: LanguageVersionSettings,
- capabilities: Map, Any?> = mapOf(MultiTargetPlatform.CAPABILITY to MultiTargetPlatform.Common),
+ capabilities: Map, Any?> = emptyMap(),
metadataPartProviderFactory: (ModuleContent) -> MetadataPartProvider
): AnalysisResult {
val moduleInfo = SourceModuleInfo(moduleName, capabilities, dependOnBuiltIns)
@@ -121,8 +122,7 @@ object CommonResolverForModuleFactory : ResolverForModuleFactory() {
platformParameters: PlatformAnalysisParameters,
targetEnvironment: TargetEnvironment,
resolverForProject: ResolverForProject,
- languageVersionSettings: LanguageVersionSettings,
- targetPlatformVersion: TargetPlatformVersion
+ languageVersionSettings: LanguageVersionSettings
): ResolverForModule {
val (moduleInfo, syntheticFiles, moduleContentScope) = moduleContent
val project = moduleContext.project
@@ -156,7 +156,7 @@ object CommonResolverForModuleFactory : ResolverForModuleFactory() {
metadataPartProvider: MetadataPartProvider,
languageVersionSettings: LanguageVersionSettings
): StorageComponentContainer = createContainer("ResolveCommonCode", CommonPlatformCompilerServices) {
- configureModule(moduleContext, CommonPlatform, TargetPlatformVersion.NoVersion, CommonPlatformCompilerServices, bindingTrace)
+ configureModule(moduleContext, DefaultBuiltInPlatforms.commonPlatform, CommonPlatformCompilerServices, bindingTrace)
useInstance(moduleContentScope)
useInstance(LookupTracker.DO_NOTHING)
diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/platform/CommonPlatforms.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/platform/CommonPlatforms.kt
new file mode 100644
index 00000000000..f8590400d7b
--- /dev/null
+++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/platform/CommonPlatforms.kt
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2010-2019 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.platform
+
+import org.jetbrains.kotlin.platform.js.JsPlatforms
+import org.jetbrains.kotlin.platform.js.JsPlatforms.defaultJsPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms.defaultJvmPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms.jvm18
+import org.jetbrains.kotlin.platform.konan.KonanPlatforms
+import org.jetbrains.kotlin.platform.konan.KonanPlatforms.defaultKonanPlatform
+
+object CommonPlatforms {
+
+ val defaultCommonPlatform: TargetPlatform = TargetPlatform(
+ setOf(
+ defaultJvmPlatform.single(),
+ defaultJsPlatform.single(),
+ defaultKonanPlatform.single()
+ )
+ )
+
+ val allSimplePlatforms: List
+ get() = sequence {
+ yieldAll(JvmPlatforms.allJvmPlatforms)
+ yieldAll(KonanPlatforms.allKonanPlatforms)
+ yieldAll(JsPlatforms.allJsPlatforms)
+
+ // TODO(dsavvinov): extensions points?
+ }.toList()
+}
+
diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/platform/konan/KonanPlatform.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/platform/konan/KonanPlatform.kt
new file mode 100644
index 00000000000..1ae71f6a025
--- /dev/null
+++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/platform/konan/KonanPlatform.kt
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * 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.platform.konan
+
+import org.jetbrains.kotlin.platform.SimplePlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.toTargetPlatform
+
+abstract class KonanPlatform : SimplePlatform("Native") {
+ override val oldFashionedDescription: String
+ get() = "Kotlin/Native "
+}
+
+object KonanPlatforms {
+ val defaultKonanPlatform: TargetPlatform = object : KonanPlatform() {}.toTargetPlatform()
+
+ val allKonanPlatforms: List = listOf(defaultKonanPlatform)
+}
+
+fun TargetPlatform?.isNative(): Boolean = this?.singleOrNull() is KonanPlatform
\ No newline at end of file
diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt
index ed873a9328d..debab985d4d 100644
--- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt
+++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinToJVMBytecodeCompiler.kt
@@ -66,11 +66,13 @@ import org.jetbrains.kotlin.modules.Module
import org.jetbrains.kotlin.modules.TargetId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus
import org.jetbrains.kotlin.psi.KtFile
-import org.jetbrains.kotlin.resolve.TargetPlatform
+import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices
import org.jetbrains.kotlin.resolve.jvm.KotlinJavaPsiFacade
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
import org.jetbrains.kotlin.utils.newLinkedHashMapWithExpectedSize
import org.jetbrains.kotlin.utils.tryConstructClassFromStringArgs
import java.io.File
@@ -301,7 +303,11 @@ object KotlinToJVMBytecodeCompiler {
val dependencies: MutableList = mutableListOf()
- override val platform: TargetPlatform? get() = JvmPlatform
+ override val platform: TargetPlatform
+ get() = JvmPlatforms.unspecifiedJvmPlatform
+
+ override val analyzerServices: PlatformDependentAnalyzerServices
+ get() = JvmPlatformAnalyzerServices
override fun dependencies(): List {
return dependencies
diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/TopDownAnalyzerFacadeForJVM.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/TopDownAnalyzerFacadeForJVM.kt
index ef1fbbd5376..fb21a8020a1 100644
--- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/TopDownAnalyzerFacadeForJVM.kt
+++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/TopDownAnalyzerFacadeForJVM.kt
@@ -55,6 +55,7 @@ import org.jetbrains.kotlin.load.kotlin.incremental.IncrementalPackageFragmentPr
import org.jetbrains.kotlin.load.kotlin.incremental.IncrementalPackagePartProvider
import org.jetbrains.kotlin.modules.TargetId
import org.jetbrains.kotlin.name.Name
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.*
import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver
@@ -167,8 +168,9 @@ object TopDownAnalyzerFacadeForJVM {
val dependencyScope = GlobalSearchScope.notScope(sourceScope)
val dependenciesContainer = createContainerForTopDownAnalyzerForJvm(
+ JvmPlatforms.jvmPlatformByTargetVersion(jvmTarget), // TODO(dsavvinov): do not pass JvmTarget around
dependenciesContext, trace, DeclarationProviderFactory.EMPTY, dependencyScope, lookupTracker, expectActualTracker,
- packagePartProvider(dependencyScope), moduleClassResolver, targetEnvironment, jvmTarget, languageVersionSettings,
+ packagePartProvider(dependencyScope), moduleClassResolver, targetEnvironment, languageVersionSettings,
configureJavaClassFinder
)
@@ -196,8 +198,9 @@ object TopDownAnalyzerFacadeForJVM {
// to be stored in CliLightClassGenerationSupport, and it better be the source one (otherwise light classes would not be found)
// TODO: get rid of duplicate invocation of CodeAnalyzerInitializer#initialize, or refactor CliLightClassGenerationSupport
val container = createContainerForTopDownAnalyzerForJvm(
+ JvmPlatforms.jvmPlatformByTargetVersion(jvmTarget),
moduleContext, trace, declarationProviderFactory(storageManager, files), sourceScope, lookupTracker, expectActualTracker,
- partProvider, moduleClassResolver, targetEnvironment, jvmTarget, languageVersionSettings, configureJavaClassFinder,
+ partProvider, moduleClassResolver, targetEnvironment, languageVersionSettings, configureJavaClassFinder,
configuration[JVMConfigurationKeys.JAVA_CLASSES_TRACKER]
).apply {
initJvmBuiltInsForTopDownAnalysis()
diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/descriptors/FirModuleDescriptor.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/descriptors/FirModuleDescriptor.kt
index 0b9df85fe18..b79e59e2f5a 100644
--- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/descriptors/FirModuleDescriptor.kt
+++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/descriptors/FirModuleDescriptor.kt
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
+import org.jetbrains.kotlin.platform.TargetPlatform
class FirModuleDescriptor(val session: FirSession) : ModuleDescriptor {
override val builtIns: KotlinBuiltIns
@@ -25,6 +26,9 @@ class FirModuleDescriptor(val session: FirSession) : ModuleDescriptor {
return false
}
+ override val platform: TargetPlatform?
+ get() = null
+
override fun getPackage(fqName: FqName): PackageViewDescriptor {
val symbolProvider = FirSymbolProvider.getInstance(session)
if (symbolProvider.getPackage(fqName) != null) {
diff --git a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticsSmokeTest.kt b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticsSmokeTest.kt
index 5428622ab34..d7464070b14 100644
--- a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticsSmokeTest.kt
+++ b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/AbstractFirDiagnosticsSmokeTest.kt
@@ -22,10 +22,12 @@ import org.jetbrains.kotlin.fir.resolve.FirProvider
import org.jetbrains.kotlin.fir.resolve.impl.FirProviderImpl
import org.jetbrains.kotlin.fir.resolve.transformers.FirTotalResolveTransformer
import org.jetbrains.kotlin.name.Name
-import org.jetbrains.kotlin.resolve.MultiTargetPlatform
+import org.jetbrains.kotlin.platform.CommonPlatforms
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.js.JsPlatforms
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
+import org.jetbrains.kotlin.platform.konan.KonanPlatforms
import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices
-import org.jetbrains.kotlin.resolve.TargetPlatform
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
import java.io.File
import java.util.*
@@ -130,21 +132,23 @@ abstract class AbstractFirDiagnosticsSmokeTest : BaseDiagnosticsTest() {
private val builtInsModuleInfo = BuiltInModuleInfo(Name.special(""))
protected open fun createModule(moduleName: String): TestModuleInfo {
- val nameSuffix = moduleName.substringAfterLast("-", "")
- // TODO: use platform
+ val nameSuffix = moduleName.substringAfterLast("-", "").toUpperCase()
@Suppress("UNUSED_VARIABLE")
val platform =
when {
- nameSuffix.isEmpty() -> null
- nameSuffix == "common" -> MultiTargetPlatform.Common
- else -> MultiTargetPlatform.Specific(nameSuffix.toUpperCase())
+ nameSuffix.isEmpty() -> null // TODO(dsavvinov): this leads to 'null'-platform in ModuleDescriptor
+ nameSuffix == "COMMON" -> CommonPlatforms.defaultCommonPlatform
+ nameSuffix == "JVM" -> JvmPlatforms.defaultJvmPlatform // TODO(dsavvinov): determine JvmTarget precisely
+ nameSuffix == "JS" -> JsPlatforms.defaultJsPlatform
+ nameSuffix == "NATIVE" -> KonanPlatforms.defaultKonanPlatform
+ else -> throw IllegalStateException("Can't determine platform by name $nameSuffix")
}
return TestModuleInfo(Name.special("<$moduleName>"))
}
class BuiltInModuleInfo(override val name: Name) : ModuleInfo {
override val platform: TargetPlatform?
- get() = JvmPlatform
+ get() = JvmPlatforms.defaultJvmPlatform
override val compilerServices: PlatformDependentCompilerServices
get() = JvmPlatformCompilerServices
@@ -156,7 +160,7 @@ abstract class AbstractFirDiagnosticsSmokeTest : BaseDiagnosticsTest() {
protected class TestModuleInfo(override val name: Name) : ModuleInfo {
override val platform: TargetPlatform?
- get() = JvmPlatform
+ get() = JvmPlatforms.defaultJvmPlatform
override val compilerServices: PlatformDependentCompilerServices
get() = JvmPlatformCompilerServices
diff --git a/compiler/frontend.common/src/org/jetbrains/kotlin/analyzer/ModuleInfo.kt b/compiler/frontend.common/src/org/jetbrains/kotlin/analyzer/ModuleInfo.kt
index 8fb87f8a9fe..6c549740e40 100644
--- a/compiler/frontend.common/src/org/jetbrains/kotlin/analyzer/ModuleInfo.kt
+++ b/compiler/frontend.common/src/org/jetbrains/kotlin/analyzer/ModuleInfo.kt
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.analyzer
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices
-import org.jetbrains.kotlin.resolve.TargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
interface 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
deleted file mode 100644
index 995ed9d4b62..00000000000
--- a/compiler/frontend.common/src/org/jetbrains/kotlin/resolve/TargetPlatform.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
- * 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
-
-abstract class TargetPlatform(val platformName: String) {
- override fun toString() = platformName
- abstract val platform: MultiTargetPlatform
-}
diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/config/JvmTarget.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/config/JvmTarget.kt
index 4dfc0bba7f9..eb408d8af1a 100644
--- a/compiler/frontend.java/src/org/jetbrains/kotlin/config/JvmTarget.kt
+++ b/compiler/frontend.java/src/org/jetbrains/kotlin/config/JvmTarget.kt
@@ -17,6 +17,7 @@
package org.jetbrains.kotlin.config
+import org.jetbrains.kotlin.platform.TargetPlatformVersion
import org.jetbrains.org.objectweb.asm.Opcodes
enum class JvmTarget(override val description: String) : TargetPlatformVersion {
diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/frontend/java/di/injection.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/frontend/java/di/injection.kt
index c25a00c3fe3..6d40734f446 100644
--- a/compiler/frontend.java/src/org/jetbrains/kotlin/frontend/java/di/injection.kt
+++ b/compiler/frontend.java/src/org/jetbrains/kotlin/frontend/java/di/injection.kt
@@ -21,7 +21,6 @@ import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.builtins.jvm.JvmBuiltIns
import org.jetbrains.kotlin.builtins.jvm.JvmBuiltInsPackageFragmentProvider
import org.jetbrains.kotlin.config.JvmAnalysisFlags
-import org.jetbrains.kotlin.config.JvmTarget
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.container.*
@@ -41,9 +40,9 @@ import org.jetbrains.kotlin.load.java.lazy.ModuleClassResolver
import org.jetbrains.kotlin.load.kotlin.DeserializationComponentsForJava
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
import org.jetbrains.kotlin.load.kotlin.VirtualFileFinderFactory
+import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.resolve.*
import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
import org.jetbrains.kotlin.resolve.lazy.KotlinCodeAnalyzer
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
@@ -79,22 +78,22 @@ private fun StorageComponentContainer.configureJavaTopDownAnalysis(
}
fun createContainerForLazyResolveWithJava(
- moduleContext: ModuleContext,
- bindingTrace: BindingTrace,
- declarationProviderFactory: DeclarationProviderFactory,
- moduleContentScope: GlobalSearchScope,
- moduleClassResolver: ModuleClassResolver,
- targetEnvironment: TargetEnvironment,
- lookupTracker: LookupTracker,
- expectActualTracker: ExpectActualTracker,
- packagePartProvider: PackagePartProvider,
- jvmTarget: JvmTarget,
- languageVersionSettings: LanguageVersionSettings,
- useBuiltInsProvider: Boolean,
- configureJavaClassFinder: (StorageComponentContainer.() -> Unit)? = null,
- javaClassTracker: JavaClassesTracker? = null
+ jvmPlatform: TargetPlatform,
+ moduleContext: ModuleContext,
+ bindingTrace: BindingTrace,
+ declarationProviderFactory: DeclarationProviderFactory,
+ moduleContentScope: GlobalSearchScope,
+ moduleClassResolver: ModuleClassResolver,
+ targetEnvironment: TargetEnvironment,
+ lookupTracker: LookupTracker,
+ expectActualTracker: ExpectActualTracker,
+ packagePartProvider: PackagePartProvider,
+ languageVersionSettings: LanguageVersionSettings,
+ useBuiltInsProvider: Boolean,
+ configureJavaClassFinder: (StorageComponentContainer.() -> Unit)? = null,
+ javaClassTracker: JavaClassesTracker? = null
): StorageComponentContainer = createContainer("LazyResolveWithJava", JvmPlatformCompilerServices) {
- configureModule(moduleContext, JvmPlatform, jvmTarget, JvmPlatformCompilerServices, bindingTrace)
+ configureModule(moduleContext, jvmPlatform, JvmPlatformCompilerServices, bindingTrace)
configureJavaTopDownAnalysis(moduleContentScope, moduleContext.project, lookupTracker, expectActualTracker)
if (configureJavaClassFinder != null) {
@@ -135,22 +134,22 @@ fun createContainerForLazyResolveWithJava(
fun createContainerForTopDownAnalyzerForJvm(
- moduleContext: ModuleContext,
- bindingTrace: BindingTrace,
- declarationProviderFactory: DeclarationProviderFactory,
- moduleContentScope: GlobalSearchScope,
- lookupTracker: LookupTracker,
- expectActualTracker: ExpectActualTracker,
- packagePartProvider: PackagePartProvider,
- moduleClassResolver: ModuleClassResolver,
- targetEnvironment: TargetEnvironment,
- jvmTarget: JvmTarget,
- languageVersionSettings: LanguageVersionSettings,
- configureJavaClassFinder: (StorageComponentContainer.() -> Unit)? = null,
- javaClassTracker: JavaClassesTracker? = null
+ jvmPlatform: TargetPlatform,
+ moduleContext: ModuleContext,
+ bindingTrace: BindingTrace,
+ declarationProviderFactory: DeclarationProviderFactory,
+ moduleContentScope: GlobalSearchScope,
+ lookupTracker: LookupTracker,
+ expectActualTracker: ExpectActualTracker,
+ packagePartProvider: PackagePartProvider,
+ moduleClassResolver: ModuleClassResolver,
+ targetEnvironment: TargetEnvironment,
+ languageVersionSettings: LanguageVersionSettings,
+ configureJavaClassFinder: (StorageComponentContainer.() -> Unit)? = null,
+ javaClassTracker: JavaClassesTracker? = null
): ComponentProvider = createContainerForLazyResolveWithJava(
- moduleContext, bindingTrace, declarationProviderFactory, moduleContentScope, moduleClassResolver,
- targetEnvironment, lookupTracker, expectActualTracker, packagePartProvider, jvmTarget, languageVersionSettings,
+ jvmPlatform, moduleContext, bindingTrace, declarationProviderFactory, moduleContentScope, moduleClassResolver,
+ targetEnvironment, lookupTracker, expectActualTracker, packagePartProvider, languageVersionSettings,
useBuiltInsProvider = true,
configureJavaClassFinder = configureJavaClassFinder,
javaClassTracker = javaClassTracker
diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/platform/jvm/JvmPlatform.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/platform/jvm/JvmPlatform.kt
new file mode 100644
index 00000000000..1e95c1a111e
--- /dev/null
+++ b/compiler/frontend.java/src/org/jetbrains/kotlin/platform/jvm/JvmPlatform.kt
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2010-2019 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.platform.jvm
+
+import org.jetbrains.kotlin.config.JvmTarget
+import org.jetbrains.kotlin.platform.SimplePlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.toTargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatformVersion
+
+abstract class JvmPlatform : SimplePlatform("JVM") {
+ override val oldFashionedDescription: String
+ get() = "JVM "
+}
+
+object JvmPlatforms {
+ private val jvmTargetToJdkPlatform: Map =
+ JvmTarget.values().map { it to JdkPlatform(it).toTargetPlatform() }.toMap()
+
+ val defaultJvmPlatform: TargetPlatform = jvmTargetToJdkPlatform[JvmTarget.DEFAULT]!!
+
+ val jvm16: TargetPlatform = jvmTargetToJdkPlatform[JvmTarget.JVM_1_6]!!
+ val jvm18: TargetPlatform = jvmTargetToJdkPlatform[JvmTarget.JVM_1_8]!!
+
+ fun jvmPlatformByTargetVersion(targetVersion: JvmTarget): TargetPlatform =
+ jvmTargetToJdkPlatform[targetVersion]!!
+
+ val allJvmPlatforms: List = jvmTargetToJdkPlatform.values.toList()
+}
+
+data class JdkPlatform(val targetVersion: JvmTarget) : JvmPlatform() {
+ override fun toString(): String = "$platformName ($targetVersion)"
+
+ override val oldFashionedDescription: String
+ get() = "JVM " + targetVersion.description
+
+ override val targetPlatformVersion: TargetPlatformVersion
+ get() = targetVersion
+}
+
+fun TargetPlatform?.isJvm(): Boolean = this?.singleOrNull() is JvmPlatform
\ No newline at end of file
diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/JvmResolverForModuleFactory.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/JvmResolverForModuleFactory.kt
index 26eeb200e20..a827cb2c9b9 100644
--- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/JvmResolverForModuleFactory.kt
+++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/JvmResolverForModuleFactory.kt
@@ -17,9 +17,7 @@
package org.jetbrains.kotlin.resolve.jvm
import org.jetbrains.kotlin.analyzer.*
-import org.jetbrains.kotlin.config.JvmTarget
import org.jetbrains.kotlin.config.LanguageVersionSettings
-import org.jetbrains.kotlin.config.TargetPlatformVersion
import org.jetbrains.kotlin.container.get
import org.jetbrains.kotlin.context.ModuleContext
import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider
@@ -30,11 +28,10 @@ import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.load.java.lazy.ModuleClassResolverImpl
import org.jetbrains.kotlin.load.java.structure.JavaClass
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
+import org.jetbrains.kotlin.platform.jvm.isJvm
import org.jetbrains.kotlin.resolve.CodeAnalyzerInitializer
import org.jetbrains.kotlin.resolve.TargetEnvironment
-import org.jetbrains.kotlin.resolve.TargetPlatform
import org.jetbrains.kotlin.resolve.jvm.extensions.PackageFragmentProviderExtension
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactoryService
@@ -52,8 +49,7 @@ object JvmResolverForModuleFactory : ResolverForModuleFactory() {
platformParameters: PlatformAnalysisParameters,
targetEnvironment: TargetEnvironment,
resolverForProject: ResolverForProject,
- languageVersionSettings: LanguageVersionSettings,
- targetPlatformVersion: TargetPlatformVersion
+ languageVersionSettings: LanguageVersionSettings
): ResolverForModule {
val (moduleInfo, syntheticFiles, moduleContentScope) = moduleContent
val project = moduleContext.project
@@ -73,7 +69,7 @@ object JvmResolverForModuleFactory : ResolverForModuleFactory() {
val resolverForReferencedModule = referencedClassModule?.let { resolverForProject.tryGetResolverForModule(it as M) }
val resolverForModule = resolverForReferencedModule?.takeIf {
- referencedClassModule.platform == JvmPlatform || referencedClassModule.platform == null
+ referencedClassModule.platform.isJvm() || referencedClassModule.platform == null
} ?: run {
// in case referenced class lies outside of our resolver, resolve the class as if it is inside our module
// this leads to java class being resolved several times
@@ -82,12 +78,12 @@ object JvmResolverForModuleFactory : ResolverForModuleFactory() {
resolverForModule.componentProvider.get()
}
- val jvmTarget = targetPlatformVersion as? JvmTarget ?: JvmTarget.DEFAULT
val trace = CodeAnalyzerInitializer.getInstance(project).createTrace()
val lookupTracker = LookupTracker.DO_NOTHING
val packagePartProvider = (platformParameters as JvmPlatformParameters).packagePartProviderFactory(moduleContent)
val container = createContainerForLazyResolveWithJava(
+ moduleDescriptor.platform!!,
moduleContext,
trace,
declarationProviderFactory,
@@ -97,7 +93,6 @@ object JvmResolverForModuleFactory : ResolverForModuleFactory() {
lookupTracker,
ExpectActualTracker.DoNothing,
packagePartProvider,
- jvmTarget,
languageVersionSettings,
useBuiltInsProvider = false // TODO: load built-ins from module dependencies in IDE
)
diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt
deleted file mode 100644
index 5d958e85c96..00000000000
--- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatform.kt
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright 2010-2015 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.jetbrains.kotlin.resolve.jvm.platform
-
-import org.jetbrains.kotlin.resolve.*
-
-object JvmPlatform : TargetPlatform("JVM") {
- override val platform = MultiTargetPlatform.Specific(platformName)
-}
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt
index f12761d5154..2270c224378 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt
+++ b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt
@@ -25,7 +25,6 @@ import org.jetbrains.kotlin.builtins.DefaultBuiltIns
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
-import org.jetbrains.kotlin.config.TargetPlatformVersion
import org.jetbrains.kotlin.container.ComponentProvider
import org.jetbrains.kotlin.context.ModuleContext
import org.jetbrains.kotlin.context.ProjectContext
@@ -37,10 +36,10 @@ import org.jetbrains.kotlin.descriptors.impl.ModuleDependencies
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatformVersion
import org.jetbrains.kotlin.psi.KtFile
-import org.jetbrains.kotlin.resolve.CompilerEnvironment
-import org.jetbrains.kotlin.resolve.TargetEnvironment
-import org.jetbrains.kotlin.resolve.TargetPlatform
+import org.jetbrains.kotlin.resolve.*
import org.jetbrains.kotlin.storage.StorageManager
import org.jetbrains.kotlin.storage.getValue
import java.util.*
@@ -185,6 +184,8 @@ class ResolverForProjectImpl(
val languageVersionSettings =
moduleLanguageSettingsProvider.getLanguageVersionSettings(module, projectContext.project, isReleaseCoroutines)
+
+ // FIXME(dsavvinov): make sure that module.platform returns platform with the same JvmTarget as this one
val targetPlatformVersion = moduleLanguageSettingsProvider.getTargetPlatform(module, projectContext.project)
val resolverForModuleFactory = resolverForModuleFactoryByPlatform(module.platform)
@@ -195,8 +196,7 @@ class ResolverForProjectImpl(
platformParameters(module.platform ?: TODO("Missing platform!")),
targetEnvironment,
this@ResolverForProjectImpl,
- languageVersionSettings,
- targetPlatformVersion
+ languageVersionSettings
)
}
}
@@ -255,7 +255,7 @@ class ResolverForProjectImpl(
module.name,
projectContext.storageManager,
builtIns,
- module.platform?.multiTargetPlatform,
+ module.platform,
module.capabilities,
module.stableName
)
@@ -304,8 +304,7 @@ abstract class ResolverForModuleFactory {
platformParameters: PlatformAnalysisParameters,
targetEnvironment: TargetEnvironment,
resolverForProject: ResolverForProject,
- languageVersionSettings: LanguageVersionSettings,
- targetPlatformVersion: TargetPlatformVersion
+ languageVersionSettings: LanguageVersionSettings
): ResolverForModule
}
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonPlatform.kt b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonPlatform.kt
index e1d1de2c385..86156ec7c62 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonPlatform.kt
+++ b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/common/CommonPlatform.kt
@@ -17,11 +17,6 @@ import org.jetbrains.kotlin.resolve.scopes.SyntheticScopes
import org.jetbrains.kotlin.storage.StorageManager
import org.jetbrains.kotlin.types.DynamicTypesSettings
-object CommonPlatform : TargetPlatform("Default") {
- override val platform: MultiTargetPlatform
- get() = MultiTargetPlatform.Common
-}
-
private object CommonPlatformConfigurator : PlatformConfiguratorBase(
DynamicTypesSettings(), listOf(), listOf(), listOf(), listOf(), listOf(),
IdentifierChecker.Default, OverloadFilter.Default, PlatformToKotlinClassMap.EMPTY, DelegationFilter.Default,
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/checkers/utils/CheckerTestUtil.kt b/compiler/frontend/src/org/jetbrains/kotlin/checkers/utils/CheckerTestUtil.kt
index afc7ff1996b..82fb570c7aa 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/checkers/utils/CheckerTestUtil.kt
+++ b/compiler/frontend/src/org/jetbrains/kotlin/checkers/utils/CheckerTestUtil.kt
@@ -20,17 +20,18 @@ import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
+import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.psi.KtCallableDeclaration
import org.jetbrains.kotlin.psi.KtExpression
import org.jetbrains.kotlin.psi.KtReferenceExpression
import org.jetbrains.kotlin.psi.psiUtil.endOffset
import org.jetbrains.kotlin.psi.psiUtil.startOffset
-import org.jetbrains.kotlin.resolve.AnalyzingUtils
-import org.jetbrains.kotlin.resolve.BindingContext
-import org.jetbrains.kotlin.resolve.MultiTargetPlatform
+import org.jetbrains.kotlin.resolve.*
import org.jetbrains.kotlin.resolve.calls.callUtil.getType
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactory
+import org.jetbrains.kotlin.platform.isCommon
+import org.jetbrains.kotlin.platform.oldFashionedDescription
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.expressions.typeInfoFactory.noTypeInfo
import java.util.*
@@ -48,7 +49,7 @@ object CheckerTestUtil {
fun getDiagnosticsIncludingSyntaxErrors(
bindingContext: BindingContext,
- implementingModulesBindings: List>,
+ implementingModulesBindings: List>,
root: PsiElement,
markDynamicCalls: Boolean,
dynamicCallDescriptors: MutableList,
@@ -70,10 +71,11 @@ object CheckerTestUtil {
moduleDescriptor,
diagnosedRanges
)
- val sortedBindings = implementingModulesBindings.sortedBy { it.first }
+
+ val sortedBindings = implementingModulesBindings.sortedBy { it.first.oldFashionedDescription }
for ((platform, second) in sortedBindings) {
- assert(platform is MultiTargetPlatform.Specific) { "Implementing module must have a specific platform: $platform" }
+ assert(!platform.isCommon()) { "Implementing module must have a specific platform: $platform" }
result.addAll(
getDiagnosticsIncludingSyntaxErrors(
@@ -81,7 +83,7 @@ object CheckerTestUtil {
root,
markDynamicCalls,
dynamicCallDescriptors,
- (platform as MultiTargetPlatform.Specific).platform,
+ platform.single().platformName,
withNewInference,
languageVersionSettings,
dataFlowValueFactory,
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/context/context.kt b/compiler/frontend/src/org/jetbrains/kotlin/context/context.kt
index eb55378dbb1..59b53a70c55 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/context/context.kt
+++ b/compiler/frontend/src/org/jetbrains/kotlin/context/context.kt
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.name.Name
-import org.jetbrains.kotlin.resolve.MultiTargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.storage.ExceptionTracker
import org.jetbrains.kotlin.storage.LockBasedStorageManager
import org.jetbrains.kotlin.storage.StorageManager
@@ -99,8 +99,8 @@ fun ContextForNewModule(
projectContext: ProjectContext,
moduleName: Name,
builtIns: KotlinBuiltIns,
- multiTargetPlatform: MultiTargetPlatform?
+ platform: TargetPlatform?
): MutableModuleContext {
- val module = ModuleDescriptorImpl(moduleName, projectContext.storageManager, builtIns, multiTargetPlatform)
+ val module = ModuleDescriptorImpl(moduleName, projectContext.storageManager, builtIns, platform)
return MutableModuleContextImpl(module, projectContext)
}
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/Renderers.kt b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/Renderers.kt
index 7b5103e9c02..753c0fda351 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/Renderers.kt
+++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/rendering/Renderers.kt
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.descriptors.impl.TypeAliasConstructorDescriptor
import org.jetbrains.kotlin.diagnostics.rendering.TabledDescriptorRenderer.newTable
import org.jetbrains.kotlin.diagnostics.rendering.TabledDescriptorRenderer.newText
import org.jetbrains.kotlin.name.Name
+import org.jetbrains.kotlin.platform.isCommon
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.renderer.DescriptorRenderer
import org.jetbrains.kotlin.renderer.DescriptorRenderer.Companion.DEBUG_TEXT
@@ -85,11 +86,10 @@ object Renderers {
@JvmField
val PLATFORM = Renderer {
- val platform = it.getMultiTargetPlatform()
- " ${it.getCapability(ModuleInfo.Capability)?.displayedName ?: ""}" + when (platform) {
- MultiTargetPlatform.Common -> ""
- is MultiTargetPlatform.Specific -> " for " + platform.platform
- null -> ""
+ val platform = it.platform
+ " ${it.getCapability(ModuleInfo.Capability)?.displayedName ?: ""}" + when {
+ platform == null || platform.isCommon() -> ""
+ else -> " for " + platform.single().platformName
}
}
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/extensions/StorageComponentContainerContributor.kt b/compiler/frontend/src/org/jetbrains/kotlin/extensions/StorageComponentContainerContributor.kt
index a54ffa094c9..80899fbf5aa 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/extensions/StorageComponentContainerContributor.kt
+++ b/compiler/frontend/src/org/jetbrains/kotlin/extensions/StorageComponentContainerContributor.kt
@@ -18,7 +18,7 @@ package org.jetbrains.kotlin.extensions
import org.jetbrains.kotlin.container.StorageComponentContainer
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
-import org.jetbrains.kotlin.resolve.TargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
interface StorageComponentContainerContributor {
companion object : ProjectExtensionDescriptor(
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 29517e32595..2107f3565c8 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/frontend/di/injection.kt
+++ b/compiler/frontend/src/org/jetbrains/kotlin/frontend/di/injection.kt
@@ -16,11 +16,10 @@
package org.jetbrains.kotlin.frontend.di
-import org.jetbrains.kotlin.analyzer.common.CommonPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.analyzer.common.CommonPlatformCompilerServices
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
-import org.jetbrains.kotlin.config.TargetPlatformVersion
import org.jetbrains.kotlin.container.StorageComponentContainer
import org.jetbrains.kotlin.container.get
import org.jetbrains.kotlin.container.useImpl
@@ -29,7 +28,9 @@ import org.jetbrains.kotlin.context.ModuleContext
import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
import org.jetbrains.kotlin.incremental.components.LookupTracker
+import org.jetbrains.kotlin.platform.subplatformOfType
import org.jetbrains.kotlin.psi.KtFile
+import org.jetbrains.kotlin.platform.TargetPlatformVersion
import org.jetbrains.kotlin.resolve.*
import org.jetbrains.kotlin.resolve.calls.components.ClassicTypeSystemContextForCS
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactoryImpl
@@ -46,7 +47,6 @@ import org.jetbrains.kotlin.types.expressions.LocalLazyDeclarationResolver
fun StorageComponentContainer.configureModule(
moduleContext: ModuleContext,
platform: TargetPlatform,
- platformVersion: TargetPlatformVersion,
compilerServices: PlatformDependentCompilerServices
) {
useInstance(moduleContext)
@@ -56,8 +56,8 @@ fun StorageComponentContainer.configureModule(
useInstance(moduleContext.module.builtIns)
useInstance(platform)
- useInstance(platformVersion)
useInstance(compilerServices)
+ useInstance(platform.componentPlatforms.singleOrNull()?.targetPlatformVersion ?: TargetPlatformVersion.NoVersion)
compilerServices.platformConfigurator.configureModuleComponents(this)
compilerServices.platformConfigurator.configureModuleDependentCheckers(this)
@@ -83,11 +83,10 @@ private fun StorageComponentContainer.configurePlatformIndependentComponents() {
fun StorageComponentContainer.configureModule(
moduleContext: ModuleContext,
platform: TargetPlatform,
- platformVersion: TargetPlatformVersion,
compilerServices: PlatformDependentCompilerServices,
trace: BindingTrace
) {
- configureModule(moduleContext, platform, platformVersion, compilerServices)
+ configureModule(moduleContext, platform, compilerServices)
useInstance(trace)
}
@@ -96,11 +95,10 @@ fun createContainerForBodyResolve(
bindingTrace: BindingTrace,
platform: TargetPlatform,
statementFilter: StatementFilter,
- targetPlatformVersion: TargetPlatformVersion,
compilerServices: PlatformDependentCompilerServices,
languageVersionSettings: LanguageVersionSettings
): StorageComponentContainer = createContainer("BodyResolve", compilerServices) {
- configureModule(moduleContext, platform, targetPlatformVersion, compilerServices, bindingTrace)
+ configureModule(moduleContext, platform, compilerServices, bindingTrace)
useInstance(statementFilter)
@@ -118,11 +116,10 @@ fun createContainerForLazyBodyResolve(
bindingTrace: BindingTrace,
platform: TargetPlatform,
bodyResolveCache: BodyResolveCache,
- targetPlatformVersion: TargetPlatformVersion,
compilerServices: PlatformDependentCompilerServices,
languageVersionSettings: LanguageVersionSettings
): StorageComponentContainer = createContainer("LazyBodyResolve", compilerServices) {
- configureModule(moduleContext, platform, targetPlatformVersion, compilerServices, bindingTrace)
+ configureModule(moduleContext, platform, compilerServices, bindingTrace)
useInstance(kotlinCodeAnalyzer)
useInstance(kotlinCodeAnalyzer.fileScopeProvider)
@@ -139,13 +136,12 @@ fun createContainerForLazyLocalClassifierAnalyzer(
bindingTrace: BindingTrace,
platform: TargetPlatform,
lookupTracker: LookupTracker,
- targetPlatformVersion: TargetPlatformVersion,
languageVersionSettings: LanguageVersionSettings,
statementFilter: StatementFilter,
localClassDescriptorHolder: LocalClassDescriptorHolder,
compilerServices: PlatformDependentCompilerServices
): StorageComponentContainer = createContainer("LocalClassifierAnalyzer", compilerServices) {
- configureModule(moduleContext, platform, targetPlatformVersion, compilerServices, bindingTrace)
+ configureModule(moduleContext, platform, compilerServices, bindingTrace)
useInstance(localClassDescriptorHolder)
useInstance(lookupTracker)
@@ -173,12 +169,11 @@ fun createContainerForLazyResolve(
declarationProviderFactory: DeclarationProviderFactory,
bindingTrace: BindingTrace,
platform: TargetPlatform,
- targetPlatformVersion: TargetPlatformVersion,
compilerServices: PlatformDependentCompilerServices,
targetEnvironment: TargetEnvironment,
languageVersionSettings: LanguageVersionSettings
): StorageComponentContainer = createContainer("LazyResolve", compilerServices) {
- configureModule(moduleContext, platform, targetPlatformVersion, compilerServices, bindingTrace)
+ configureModule(moduleContext, platform, compilerServices, bindingTrace)
useInstance(declarationProviderFactory)
useInstance(languageVersionSettings)
@@ -192,13 +187,13 @@ fun createContainerForLazyResolve(
useImpl()
}
+// TODO: remove it
fun createLazyResolveSession(moduleContext: ModuleContext, files: Collection): ResolveSession =
createContainerForLazyResolve(
moduleContext,
FileBasedDeclarationProviderFactory(moduleContext.storageManager, files),
BindingTraceContext(),
- CommonPlatform,
- TargetPlatformVersion.NoVersion,
+ DefaultBuiltInPlatforms.commonPlatform,
CommonPlatformCompilerServices,
CompilerEnvironment,
LanguageVersionSettingsImpl.DEFAULT
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverloadResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverloadResolver.kt
index 672bdbe6430..feddac38ed8 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverloadResolver.kt
+++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/OverloadResolver.kt
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.idea.MainFunctionDetector
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
import org.jetbrains.kotlin.name.FqNameUnsafe
import org.jetbrains.kotlin.name.Name
+import org.jetbrains.kotlin.resolve.descriptorUtil.platform
import org.jetbrains.kotlin.resolve.scopes.MemberScope
import java.util.*
@@ -290,7 +291,7 @@ class OverloadResolver(
if (member1 !is MemberDescriptor || member2 !is MemberDescriptor) return false
return member1.isActual && member2.isActual &&
- member1.getMultiTargetPlatform() != member2.getMultiTargetPlatform()
+ member1.platform != member2.platform
}
private fun reportRedeclarations(redeclarations: Collection) {
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/OptionalExpectationUsageChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/OptionalExpectationUsageChecker.kt
index c826aa3463e..dbba43206e8 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/OptionalExpectationUsageChecker.kt
+++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/OptionalExpectationUsageChecker.kt
@@ -9,9 +9,8 @@ import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
import org.jetbrains.kotlin.diagnostics.Errors
import org.jetbrains.kotlin.psi.KtFile
-import org.jetbrains.kotlin.resolve.MultiTargetPlatform
-import org.jetbrains.kotlin.resolve.descriptorUtil.module
-import org.jetbrains.kotlin.resolve.getMultiTargetPlatform
+import org.jetbrains.kotlin.resolve.descriptorUtil.platform
+import org.jetbrains.kotlin.platform.isCommon
import org.jetbrains.kotlin.resolve.multiplatform.isCommonSource
class OptionalExpectationUsageChecker : ClassifierUsageChecker {
@@ -23,8 +22,9 @@ class OptionalExpectationUsageChecker : ClassifierUsageChecker {
}
val ktFile = element.containingFile as KtFile
+ // TODO(dsavvinov): unify for compiler/IDE
// The first part is for the compiler, and the second one is for IDE
- if (ktFile.isCommonSource != true && targetDescriptor.module.getMultiTargetPlatform() != MultiTargetPlatform.Common) {
+ if (ktFile.isCommonSource != true && !targetDescriptor.platform.isCommon()) {
context.trace.report(Errors.OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE.on(element))
}
}
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/LocalClassifierAnalyzer.kt b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/LocalClassifierAnalyzer.kt
index 4384585b49f..6889f717a52 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/LocalClassifierAnalyzer.kt
+++ b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/LocalClassifierAnalyzer.kt
@@ -18,8 +18,8 @@ package org.jetbrains.kotlin.types.expressions
import com.intellij.psi.PsiElement
import com.intellij.psi.util.PsiTreeUtil
+import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.config.LanguageVersionSettings
-import org.jetbrains.kotlin.config.TargetPlatformVersion
import org.jetbrains.kotlin.container.get
import org.jetbrains.kotlin.context.GlobalContext
import org.jetbrains.kotlin.context.withModule
@@ -64,7 +64,6 @@ class LocalClassifierAnalyzer(
private val compilerServices: PlatformDependentCompilerServices,
private val lookupTracker: LookupTracker,
private val supertypeLoopChecker: SupertypeLoopChecker,
- private val targetPlatformVersion: TargetPlatformVersion,
private val languageVersionSettings: LanguageVersionSettings,
private val delegationFilter: DelegationFilter,
private val wrappedTypeFactory: WrappedTypeFactory,
@@ -84,7 +83,6 @@ class LocalClassifierAnalyzer(
context.trace,
platform,
lookupTracker,
- targetPlatformVersion,
languageVersionSettings,
context.statementFilter,
LocalClassDescriptorHolder(
diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.kt
index fddddb7c790..26b8a3f3719 100644
--- a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.kt
+++ b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.kt
@@ -39,6 +39,11 @@ import org.jetbrains.kotlin.load.java.lazy.SingleModuleClassResolver
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.name.SpecialNames
+import org.jetbrains.kotlin.platform.CommonPlatforms
+import org.jetbrains.kotlin.platform.isCommon
+import org.jetbrains.kotlin.platform.js.JsPlatforms
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
+import org.jetbrains.kotlin.platform.konan.KonanPlatforms
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.*
import org.jetbrains.kotlin.resolve.calls.model.MutableResolvedCall
@@ -166,13 +171,13 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
val actualText = StringBuilder()
for (testFile in files) {
val module = testFile.module
- val isCommonModule = modules[module]!!.getMultiTargetPlatform() == MultiTargetPlatform.Common
+ val isCommonModule = modules[module]!!.platform.isCommon()
val implementingModules =
if (!isCommonModule) emptyList()
else modules.entries.filter { (testModule) -> module in testModule?.getDependencies().orEmpty() }
val implementingModulesBindings = implementingModules.mapNotNull { (testModule, moduleDescriptor) ->
- val platform = moduleDescriptor.getCapability(MultiTargetPlatform.CAPABILITY)
- if (platform is MultiTargetPlatform.Specific) platform to moduleBindings[testModule]!!
+ val platform = moduleDescriptor.platform
+ if (platform != null && !platform.isCommon()) platform to moduleBindings[testModule]!!
else null
}
val moduleDescriptor = modules[module]!!
@@ -356,12 +361,11 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
val moduleDescriptor = moduleContext.module as ModuleDescriptorImpl
- val platform = moduleDescriptor.getMultiTargetPlatform()
- if (platform == MultiTargetPlatform.Common) {
+ val platform = moduleDescriptor.platform
+ if (platform.isCommon()) {
return CommonResolverForModuleFactory.analyzeFiles(
files, moduleDescriptor.name, true, languageVersionSettings,
mapOf(
- MultiTargetPlatform.CAPABILITY to MultiTargetPlatform.Common,
MODULE_FILES to files
)
) { _ ->
@@ -377,6 +381,7 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
val moduleClassResolver = SingleModuleClassResolver()
val container = createContainerForTopDownAnalyzerForJvm(
+ JvmPlatforms.jvmPlatformByTargetVersion(jvmTarget), // TODO(dsavvinov): do not pass JvmTarget around
moduleContext,
moduleTrace,
FileBasedDeclarationProviderFactory(moduleContext.storageManager, files),
@@ -386,7 +391,6 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
environment.createPackagePartProvider(moduleContentScope),
moduleClassResolver,
CompilerEnvironment,
- jvmTarget,
languageVersionSettings
)
@@ -417,7 +421,7 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
// E.g. "...
val result = ArrayList(0)
for (dependency in dependencies) {
- if (dependency.getCapability(MultiTargetPlatform.CAPABILITY) == MultiTargetPlatform.Common) {
+ if (dependency.platform.isCommon()) {
val files = dependency.getCapability(MODULE_FILES)
?: error("MODULE_FILES should have been set for the common module: $dependency")
result.addAll(files)
@@ -585,10 +589,16 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() {
emptyList()
protected open fun createModule(moduleName: String, storageManager: StorageManager): ModuleDescriptorImpl {
- val nameSuffix = moduleName.substringAfterLast("-", "")
+ val nameSuffix = moduleName.substringAfterLast("-", "").toUpperCase()
val platform =
- if (nameSuffix.isEmpty()) null
- else if (nameSuffix == "common") MultiTargetPlatform.Common else MultiTargetPlatform.Specific(nameSuffix.toUpperCase())
+ when {
+ nameSuffix.isEmpty() -> null // TODO(dsavvinov): this leads to 'null'-platform in ModuleDescriptor
+ nameSuffix == "COMMON" -> CommonPlatforms.defaultCommonPlatform
+ nameSuffix == "JVM" -> JvmPlatforms.defaultJvmPlatform // TODO(dsavvinov): determine JvmTarget precisely
+ nameSuffix == "JS" -> JsPlatforms.defaultJsPlatform
+ nameSuffix == "NATIVE" -> KonanPlatforms.defaultKonanPlatform
+ else -> throw IllegalStateException("Can't determine platform by name $nameSuffix")
+ }
val builtIns = JvmBuiltIns(storageManager, JvmBuiltIns.Kind.FROM_CLASS_LOADER)
return ModuleDescriptorImpl(Name.special("<$moduleName>"), storageManager, builtIns, platform)
}
diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/BaseDiagnosticsTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/BaseDiagnosticsTest.kt
index d2aa214ea5f..16414726051 100644
--- a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/BaseDiagnosticsTest.kt
+++ b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/BaseDiagnosticsTest.kt
@@ -45,7 +45,7 @@ import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.BindingContext
-import org.jetbrains.kotlin.resolve.MultiTargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactoryImpl
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.utils.addIfNotNull
@@ -223,7 +223,7 @@ abstract class BaseDiagnosticsTest : KotlinMultiFileTestWithJava>,
+ implementingModulesBindings: List>,
actualText: StringBuilder,
skipJvmSignatureDiagnostics: Boolean,
languageVersionSettings: LanguageVersionSettings,
diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/FirTestModuleInfo.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/FirTestModuleInfo.kt
index 4906f464753..f3367121ded 100644
--- a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/FirTestModuleInfo.kt
+++ b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/FirTestModuleInfo.kt
@@ -7,15 +7,15 @@ package org.jetbrains.kotlin.fir
import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.name.Name
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices
-import org.jetbrains.kotlin.resolve.TargetPlatform
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
class FirTestModuleInfo(
override val name: Name = Name.identifier("TestModule"),
val dependencies: MutableList = mutableListOf(),
- override val platform: TargetPlatform = JvmPlatform,
+ override val platform: TargetPlatform = JvmPlatforms.defaultJvmPlatform,
override val compilerServices: PlatformDependentCompilerServices = JvmPlatformCompilerServices
) : ModuleInfo {
override fun dependencies(): List = dependencies
diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/resolve/lazy/lazyResolveTestUtils.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/resolve/lazy/lazyResolveTestUtils.kt
index 17f619cc353..82d239d4660 100644
--- a/compiler/tests-common/tests/org/jetbrains/kotlin/resolve/lazy/lazyResolveTestUtils.kt
+++ b/compiler/tests-common/tests/org/jetbrains/kotlin/resolve/lazy/lazyResolveTestUtils.kt
@@ -22,17 +22,17 @@ import org.jetbrains.kotlin.analyzer.LanguageSettingsProvider
import org.jetbrains.kotlin.analyzer.ModuleContent
import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.analyzer.ResolverForProjectImpl
-import org.jetbrains.kotlin.analyzer.common.CommonPlatform
-import org.jetbrains.kotlin.analyzer.common.CommonPlatformCompilerServices
import org.jetbrains.kotlin.container.get
import org.jetbrains.kotlin.context.ProjectContext
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices
-import org.jetbrains.kotlin.resolve.TargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.resolve.jvm.JvmResolverForModuleFactory
import org.jetbrains.kotlin.resolve.jvm.JvmPlatformParameters
+import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
fun createResolveSessionForFiles(
project: Project,
@@ -67,8 +67,8 @@ private class TestModule(val dependsOnBuiltIns: Boolean) : ModuleInfo {
ModuleInfo.DependencyOnBuiltIns.NONE
override val platform: TargetPlatform
- get() = CommonPlatform
+ get() = JvmPlatforms.defaultJvmPlatform
override val compilerServices: PlatformDependentCompilerServices?
- get() = CommonPlatformCompilerServices
+ get() = JvmPlatformCompilerServices
}
diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/test/util/RecursiveDescriptorComparator.java b/compiler/tests-common/tests/org/jetbrains/kotlin/test/util/RecursiveDescriptorComparator.java
index 0ac88a6ed84..e21caf29191 100644
--- a/compiler/tests-common/tests/org/jetbrains/kotlin/test/util/RecursiveDescriptorComparator.java
+++ b/compiler/tests-common/tests/org/jetbrains/kotlin/test/util/RecursiveDescriptorComparator.java
@@ -28,10 +28,10 @@ import org.jetbrains.kotlin.descriptors.*;
import org.jetbrains.kotlin.descriptors.impl.SubpackagesScope;
import org.jetbrains.kotlin.jvm.compiler.ExpectedLoadErrorsUtil;
import org.jetbrains.kotlin.name.FqName;
+import org.jetbrains.kotlin.platform.TargetPlatformKt;
import org.jetbrains.kotlin.renderer.*;
import org.jetbrains.kotlin.resolve.DescriptorUtils;
import org.jetbrains.kotlin.resolve.MemberComparator;
-import org.jetbrains.kotlin.resolve.MultiTargetPlatform;
import org.jetbrains.kotlin.resolve.scopes.ChainedMemberScope;
import org.jetbrains.kotlin.resolve.scopes.MemberScope;
import org.jetbrains.kotlin.test.KotlinTestUtils;
@@ -243,7 +243,7 @@ public class RecursiveDescriptorComparator {
// 'expected' declarations do not belong to the platform-specific module, even though they participate in the analysis
if (descriptor instanceof MemberDescriptor && ((MemberDescriptor) descriptor).isExpect() &&
- module.getCapability(MultiTargetPlatform.CAPABILITY) != MultiTargetPlatform.Common.INSTANCE) return false;
+ !TargetPlatformKt.isCommon(module.getPlatform())) return false;
return module.equals(DescriptorUtils.getContainingModule(descriptor));
}
diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/tests/di/injection.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/tests/di/injection.kt
index d93fb76220b..aa2d2c9feb7 100644
--- a/compiler/tests-common/tests/org/jetbrains/kotlin/tests/di/injection.kt
+++ b/compiler/tests-common/tests/org/jetbrains/kotlin/tests/di/injection.kt
@@ -17,7 +17,6 @@
package org.jetbrains.kotlin.tests.di
import com.intellij.openapi.project.Project
-import org.jetbrains.kotlin.config.JvmTarget
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
import org.jetbrains.kotlin.container.StorageComponentContainer
import org.jetbrains.kotlin.container.getValue
@@ -26,9 +25,9 @@ import org.jetbrains.kotlin.container.useInstance
import org.jetbrains.kotlin.context.ModuleContext
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.frontend.di.configureModule
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.resolve.*
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactory
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
import org.jetbrains.kotlin.types.SubstitutingScopeProviderImpl
import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices
@@ -36,7 +35,8 @@ import org.jetbrains.kotlin.types.expressions.FakeCallResolver
fun createContainerForTests(project: Project, module: ModuleDescriptor): ContainerForTests {
return ContainerForTests(createContainer("Tests", JvmPlatformCompilerServices) {
- configureModule(ModuleContext(module, project), JvmPlatform, JvmTarget.DEFAULT, JvmPlatformCompilerServices)
+ configureModule(ModuleContext(module, project),
+ JvmPlatforms.defaultJvmPlatform, JvmPlatformCompilerServices)
useInstance(LanguageVersionSettingsImpl.DEFAULT)
useImpl()
useImpl()
diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/MultiModuleJavaAnalysisCustomTest.kt b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/MultiModuleJavaAnalysisCustomTest.kt
index 0a0dd624b4d..f97551e6f58 100644
--- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/MultiModuleJavaAnalysisCustomTest.kt
+++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/MultiModuleJavaAnalysisCustomTest.kt
@@ -35,13 +35,13 @@ import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices
-import org.jetbrains.kotlin.resolve.TargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.resolve.constants.EnumValue
import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
import org.jetbrains.kotlin.resolve.descriptorUtil.module
import org.jetbrains.kotlin.resolve.jvm.JvmResolverForModuleFactory
import org.jetbrains.kotlin.resolve.jvm.JvmPlatformParameters
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
import org.jetbrains.kotlin.test.ConfigurationKind
import org.jetbrains.kotlin.test.KotlinTestUtils
@@ -62,7 +62,7 @@ class MultiModuleJavaAnalysisCustomTest : KtUsefulTestCase() {
override val name = Name.special("<$_name>")
override val platform: TargetPlatform
- get() = JvmPlatform
+ get() = JvmPlatforms.defaultJvmPlatform
override val compilerServices: PlatformDependentCompilerServices?
get() = JvmPlatformCompilerServices
diff --git a/compiler/util/src/org/jetbrains/kotlin/config/TargetPlatformVersion.kt b/compiler/util/src/org/jetbrains/kotlin/config/TargetPlatformVersion.kt
deleted file mode 100644
index 594342206b0..00000000000
--- a/compiler/util/src/org/jetbrains/kotlin/config/TargetPlatformVersion.kt
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright 2010-2017 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.jetbrains.kotlin.config
-
-import org.jetbrains.kotlin.utils.DescriptionAware
-
-interface TargetPlatformVersion : DescriptionAware {
- object NoVersion : TargetPlatformVersion {
- override val description = ""
- }
-}
diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/ModuleDescriptor.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/ModuleDescriptor.kt
index 99315fc8da1..5df8bf5c95f 100644
--- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/ModuleDescriptor.kt
+++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/ModuleDescriptor.kt
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.descriptors
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
+import org.jetbrains.kotlin.platform.TargetPlatform
interface ModuleDescriptor : DeclarationDescriptor {
override fun getContainingDeclaration(): DeclarationDescriptor? = null
@@ -30,6 +31,10 @@ interface ModuleDescriptor : DeclarationDescriptor {
*/
val stableName: Name?
+ // NB: this field should actually be non-null, but making it so implies a LOT of work, so we postpone it for a moment
+ // TODO: make it non-null
+ val platform: TargetPlatform?
+
fun shouldSeeInternalsOf(targetModule: ModuleDescriptor): Boolean
override fun accept(visitor: DeclarationDescriptorVisitor, data: D): R {
diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ModuleDescriptorImpl.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ModuleDescriptorImpl.kt
index ab058d229b9..e029e3a4c36 100644
--- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ModuleDescriptorImpl.kt
+++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ModuleDescriptorImpl.kt
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.descriptors.PackageViewDescriptor
import org.jetbrains.kotlin.descriptors.annotations.Annotations
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
-import org.jetbrains.kotlin.resolve.MultiTargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.storage.StorageManager
import org.jetbrains.kotlin.utils.sure
import java.lang.IllegalArgumentException
@@ -34,8 +34,8 @@ class ModuleDescriptorImpl @JvmOverloads constructor(
private val storageManager: StorageManager,
override val builtIns: KotlinBuiltIns,
// May be null in compiler context, should be not-null in IDE context
- multiTargetPlatform: MultiTargetPlatform? = null,
- capabilities: Map, Any?> = emptyMap(),
+ override val platform: TargetPlatform? = null,
+ private val capabilities: Map, Any?> = emptyMap(),
override val stableName: Name? = null
) : DeclarationDescriptorImpl(Annotations.EMPTY, moduleName), ModuleDescriptor {
init {
@@ -44,8 +44,6 @@ class ModuleDescriptorImpl @JvmOverloads constructor(
}
}
- private val capabilities = capabilities + (multiTargetPlatform?.let { mapOf(MultiTargetPlatform.CAPABILITY to it) } ?: emptyMap())
-
private var dependencies: ModuleDependencies? = null
private var packageFragmentProviderForModuleContent: PackageFragmentProvider? = null
diff --git a/core/descriptors/src/org/jetbrains/kotlin/platform/TargetPlatform.kt b/core/descriptors/src/org/jetbrains/kotlin/platform/TargetPlatform.kt
new file mode 100644
index 00000000000..100b46910d3
--- /dev/null
+++ b/core/descriptors/src/org/jetbrains/kotlin/platform/TargetPlatform.kt
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * 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.platform
+
+/**
+ * Core abstraction of Platform API, represents a collection of platforms.
+ *
+ * This is the primarily abstraction intended to use in the most part of API, as, usually,
+ * pretty much anything that may have a platform, may have a several platforms as well in the
+ * context of multiplatform projects.
+ *
+ * Please, use it over the [SimplePlatform] unless you're absolutely sure what you're doing.
+ *
+ * NB. Even in cases, where some part of logic makes sense only for a particular platform (e.g., JVM),
+ * it still can be applicable for [TargetPlatform]s with [componentPlatforms] > 1, e.g. when it consists
+ * of two version of JDK, JDK and Android, several versions of Android API, etc.
+ */
+data class TargetPlatform(val componentPlatforms: Set) : Collection by componentPlatforms {
+ init {
+ if (componentPlatforms.isEmpty()) throw IllegalArgumentException("Don't instantiate TargetPlatform with empty set of platforms")
+ }
+
+ override fun toString(): String = presentableDescription
+}
+
+/**
+ * Core abstraction of Platform API, represents exactly one platform.
+ *
+ * API guarantees:
+ *
+ * - direct inheritors are well-known and represent three major platforms supported at the moment (JVM, JS, Native)
+ *
+ * - exact enumeration of all inheritors isn't available at the compile time, see [CommonPlatforms]
+ *
+ * - each implementation should support equality in a broad sense of "absolutely the same platform"
+ *
+ * - it is _prohibited_ to create instances of [SimplePlatform] in the client's code, use respective factory instance (e.g., [JvmPlatforms])
+ * to get instances of platforms
+ *
+ * Ideally, each specific subtype should be either a data class or singleton.
+ */
+abstract class SimplePlatform(val platformName: String) {
+ override fun toString(): String = platformName
+
+ /** See KDoc for [TargetPlatform.oldFashionedDescription] */
+ abstract val oldFashionedDescription: String
+
+ // FIXME(dsavvinov): hack to allow injection inject JvmTarget into container.
+ // Proper fix would be to rewrite clients to get JdkPlatform from container, and pull JvmTarget from it
+ // (this will also remove need in TargetPlatformVersion as the whole, and, in particular, ugly passing
+ // of TargetPlatformVersion.NoVersion in non-JVM code)
+ open val targetPlatformVersion: TargetPlatformVersion = TargetPlatformVersion.NoVersion
+}
+
+interface TargetPlatformVersion {
+ val description: String
+
+ object NoVersion : TargetPlatformVersion {
+ override val description = ""
+ }
+}
+
+fun TargetPlatform?.isCommon(): Boolean = this != null && this.size > 1
+
+fun SimplePlatform.toTargetPlatform(): TargetPlatform = TargetPlatform(setOf(this))
\ No newline at end of file
diff --git a/core/descriptors/src/org/jetbrains/kotlin/platform/platformUtil.kt b/core/descriptors/src/org/jetbrains/kotlin/platform/platformUtil.kt
new file mode 100644
index 00000000000..a95c6511e91
--- /dev/null
+++ b/core/descriptors/src/org/jetbrains/kotlin/platform/platformUtil.kt
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2010-2019 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.platform
+
+inline fun TargetPlatform.subplatformOfType(): T? = componentPlatforms.filterIsInstance().singleOrNull()
+fun TargetPlatform.subplatformOfType(klass: Class): T? = componentPlatforms.filterIsInstance(klass).singleOrNull()
+
+inline fun TargetPlatform?.has(): Boolean = this != null && subplatformOfType() != null
+fun TargetPlatform?.has(klass: Class): Boolean = this != null && subplatformOfType(klass) != null
+
+
+/**
+ * Returns human-readable description, mapping multiplatform to 'Common (experimental)',
+ * as well as maintaining some quirks of the previous representation, like trailing whitespaces
+ *
+ * It is needed mainly for backwards compatibility, because some subsystem actually
+ * managed to rely on the format of that string. In particular, 'facetSerialization.kt' uses
+ * those string as keys in serialized `.iml`-file, and changing format of that string (including
+ * trimming pointless whitespaces) leads to incorrectly deserialized facets.
+ *
+ * New clients are encouraged to use [presentableDescription] description instead, as it
+ * also provides better description for multiplatforms.
+ */
+val TargetPlatform.oldFashionedDescription: String
+ get() = if (this.isCommon()) "Common (experimental) " else this.single().oldFashionedDescription
+
+
+/**
+ * Renders multiplatform in form
+ * '$PLATFORM_1 / $PLATFORM_2 / ...'
+ * e.g.
+ * 'JVM (1.8) / JS / Native'
+ */
+val TargetPlatform.presentableDescription: String
+ get() = componentPlatforms.joinToString(separator = "/")
\ No newline at end of file
diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt
index 7329f18e347..5653101f183 100644
--- a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt
+++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.kt
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.name.FqNameUnsafe
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.DescriptorUtils.getContainingClass
+import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.resolve.constants.ConstantValue
import org.jetbrains.kotlin.resolve.constants.EnumValue
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
@@ -57,6 +58,9 @@ val DeclarationDescriptor.isExtension: Boolean
val DeclarationDescriptor.module: ModuleDescriptor
get() = DescriptorUtils.getContainingModule(this)
+val DeclarationDescriptor.platform: TargetPlatform?
+ get() = module.platform
+
fun ModuleDescriptor.resolveTopLevelClass(topLevelClassFqName: FqName, location: LookupLocation): ClassDescriptor? {
assert(!topLevelClassFqName.isRoot)
return getPackage(topLevelClassFqName.parent()).memberScope.getContributedClassifier(
diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/MultiTargetPlatform.kt b/core/descriptors/src/org/jetbrains/kotlin/resolve/MultiTargetPlatform.kt
deleted file mode 100644
index 7ba393edc74..00000000000
--- a/core/descriptors/src/org/jetbrains/kotlin/resolve/MultiTargetPlatform.kt
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2010-2017 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.jetbrains.kotlin.resolve
-
-import org.jetbrains.kotlin.descriptors.MemberDescriptor
-import org.jetbrains.kotlin.descriptors.ModuleDescriptor
-import org.jetbrains.kotlin.resolve.descriptorUtil.module
-
-sealed class MultiTargetPlatform : Comparable {
- object Common : MultiTargetPlatform() {
- override fun compareTo(other: MultiTargetPlatform): Int =
- if (other is Common) 0 else -1
- }
-
- data class Specific(val platform: String) : MultiTargetPlatform() {
- override fun compareTo(other: MultiTargetPlatform): Int =
- when (other) {
- is Common -> 1
- is Specific -> platform.compareTo(other.platform)
- }
- }
-
- companion object {
- @JvmField
- val CAPABILITY = ModuleDescriptor.Capability("MULTI_TARGET_PLATFORM")
- }
-}
-
-fun ModuleDescriptor.getMultiTargetPlatform(): MultiTargetPlatform? =
- module.getCapability(MultiTargetPlatform.CAPABILITY)
-
-fun MemberDescriptor.getMultiTargetPlatform(): String? =
- (module.getMultiTargetPlatform() as? MultiTargetPlatform.Specific)?.platform
diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java b/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java
index 61eddcc83b7..c2c2183a869 100644
--- a/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java
+++ b/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.descriptors.impl.TypeParameterDescriptorImpl;
import org.jetbrains.kotlin.incremental.components.LookupLocation;
import org.jetbrains.kotlin.name.FqName;
import org.jetbrains.kotlin.name.Name;
+import org.jetbrains.kotlin.platform.TargetPlatform;
import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt;
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter;
import org.jetbrains.kotlin.resolve.scopes.MemberScope;
@@ -80,6 +81,12 @@ public class ErrorUtils {
return Name.special("");
}
+ @Nullable
+ @Override
+ public TargetPlatform getPlatform() {
+ return null;
+ }
+
@NotNull
@Override
public PackageViewDescriptor getPackage(@NotNull FqName fqName) {
diff --git a/idea/ide-common/src/org/jetbrains/kotlin/caches/resolve/KotlinCacheService.kt b/idea/ide-common/src/org/jetbrains/kotlin/caches/resolve/KotlinCacheService.kt
index adbd7e2414d..cc3d957f678 100644
--- a/idea/ide-common/src/org/jetbrains/kotlin/caches/resolve/KotlinCacheService.kt
+++ b/idea/ide-common/src/org/jetbrains/kotlin/caches/resolve/KotlinCacheService.kt
@@ -22,7 +22,7 @@ import com.intellij.psi.PsiFile
import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
import org.jetbrains.kotlin.psi.KtElement
-import org.jetbrains.kotlin.resolve.TargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.resolve.diagnostics.KotlinSuppressCache
interface KotlinCacheService {
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/lightClasses/IDELightClassContexts.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/lightClasses/IDELightClassContexts.kt
index 6e640ab57a1..cf2817c63f6 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/lightClasses/IDELightClassContexts.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/lightClasses/IDELightClassContexts.kt
@@ -51,6 +51,7 @@ import org.jetbrains.kotlin.incremental.components.NoLookupLocation
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.getElementTextWithContext
import org.jetbrains.kotlin.resolve.*
@@ -63,7 +64,6 @@ import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfoFactory
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactory
import org.jetbrains.kotlin.resolve.calls.util.CallMaker
import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
import org.jetbrains.kotlin.resolve.lazy.FileScopeProviderImpl
import org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil
@@ -306,10 +306,10 @@ internal object IDELightClassContexts {
val moduleInfo = files.first().getModuleInfo()
val container = createContainer("LightClassStub", JvmPlatformCompilerServices) {
- val jvmTarget = IDELanguageSettingsProvider.getTargetPlatform(moduleInfo, project) as? JvmTarget
+ val jvmTarget = IDELanguageSettingsProvider.getTargetPlatform(moduleInfo, project) as? JvmTarget ?: JvmTarget.DEFAULT
configureModule(
- ModuleContext(moduleDescriptor, project), JvmPlatform,
- jvmTarget ?: JvmTarget.DEFAULT, JvmPlatformCompilerServices, trace
+ ModuleContext(moduleDescriptor, project), JvmPlatforms.jvmPlatformByTargetVersion(jvmTarget),
+ JvmPlatformCompilerServices, trace
)
useInstance(GlobalSearchScope.EMPTY_SCOPE)
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/IdeaModuleInfos.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/IdeaModuleInfos.kt
index 3abe0eab6e6..a2286238b5e 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/IdeaModuleInfos.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/IdeaModuleInfos.kt
@@ -45,8 +45,7 @@ import org.jetbrains.kotlin.idea.util.rootManager
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.platform.idePlatformKind
import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices
-import org.jetbrains.kotlin.resolve.TargetPlatform
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.utils.addIfNotNull
import java.util.*
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 9c91616e450..5912718b2fa 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,11 +17,11 @@ 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
-import org.jetbrains.kotlin.resolve.TargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.isCommon
import org.jetbrains.kotlin.utils.addIfNotNull
import java.util.*
@@ -92,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 is CommonPlatform
+ return from == to || to.isCommon()
}
private fun getLibraryUsageIndex(): LibraryUsageIndex {
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/ScriptModuleInfos.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/ScriptModuleInfos.kt
index b4a4487a441..f139aefcb41 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/ScriptModuleInfos.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/ScriptModuleInfos.kt
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices
-import org.jetbrains.kotlin.resolve.TargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
data class ScriptModuleInfo(
val project: Project,
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 bb1a7284a91..e3a738269f3 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,8 +15,8 @@ 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 org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.isCommon
import java.util.concurrent.ConcurrentHashMap
fun getModuleInfosFromIdeaModel(project: Project, platform: TargetPlatform): List {
@@ -70,7 +70,7 @@ private fun mergePlatformModules(
allModules: List,
platform: TargetPlatform
): List {
- if (platform is CommonPlatform) return allModules
+ if (platform.isCommon()) 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 20715700a4e..0af8fb08770 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,7 +14,6 @@ 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
@@ -26,7 +25,8 @@ import org.jetbrains.kotlin.idea.project.platform
import org.jetbrains.kotlin.idea.util.rootManager
import org.jetbrains.kotlin.platform.impl.CommonIdePlatformKind
import org.jetbrains.kotlin.platform.impl.isCommon
-import org.jetbrains.kotlin.resolve.TargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.isCommon
val Module.isNewMPPModule: Boolean
get() = facetSettings?.kind?.isNewMPP ?: false
@@ -119,15 +119,16 @@ private fun ModuleSourceInfo.toDescriptor() = KotlinCacheService.getInstance(mod
.getResolutionFacadeByModuleInfo(this, platform)?.moduleDescriptor
fun PsiElement.getPlatformModuleInfo(desiredPlatform: TargetPlatform): PlatformModuleInfo? {
- assert(desiredPlatform !is CommonPlatform) { "Platform module cannot have Common platform" }
+ assert(!desiredPlatform.isCommon()) { "Platform module cannot have Common platform" }
val moduleInfo = getNullableModuleInfo() as? ModuleSourceInfo ?: return null
- return when (moduleInfo.platform) {
- is CommonPlatform -> {
+ val platform = moduleInfo.platform
+ return when {
+ platform.isCommon() -> {
val correspondingImplementingModule = moduleInfo.module.implementingModules.map { it.toInfo(moduleInfo.sourceType) }
.firstOrNull { it?.platform == desiredPlatform } ?: return null
PlatformModuleInfo(correspondingImplementingModule, correspondingImplementingModule.expectedBy)
}
- desiredPlatform -> {
+ platform == desiredPlatform -> {
val expectedBy = moduleInfo.expectedBy.takeIf { it.isNotEmpty() } ?: return null
PlatformModuleInfo(moduleInfo, expectedBy)
}
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDEKotlinAsJavaSupport.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDEKotlinAsJavaSupport.kt
index 8f2f978b6da..7213311012e 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDEKotlinAsJavaSupport.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDEKotlinAsJavaSupport.kt
@@ -29,7 +29,8 @@ import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.*
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
+import org.jetbrains.kotlin.platform.jvm.isJvm
import org.jetbrains.kotlin.resolve.scopes.MemberScope
import org.jetbrains.kotlin.utils.sure
import java.util.*
@@ -240,7 +241,7 @@ class IDEKotlinAsJavaSupport(private val project: Project) : KotlinAsJavaSupport
// thus we need to ensure that resolver will be built by the file from platform part of the module
// (resolver built by a file from the common part will have no knowledge of the platform part)
// the actual of order of files that resolver receives is controlled by *findFilesForFacade* method
- private fun Collection.platformSourcesFirst() = sortedByDescending { it.platform == JvmPlatform }
+ private fun Collection.platformSourcesFirst() = sortedByDescending { it.platform.isJvm() }
private fun getLightClassForDecompiledClassOrObject(decompiledClassOrObject: KtClassOrObject): KtLightClassForDecompiledDeclaration? {
if (decompiledClassOrObject is KtEnumEntry) {
@@ -331,5 +332,5 @@ class IDEKotlinAsJavaSupport(private val project: Project) : KotlinAsJavaSupport
}
internal fun PsiElement.getModuleInfoPreferringJvmPlatform(): IdeaModuleInfo {
- return getPlatformModuleInfo(JvmPlatform) ?: getModuleInfo()
+ return getPlatformModuleInfo(JvmPlatforms.defaultJvmPlatform) ?: getModuleInfo()
}
\ No newline at end of file
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt
index e921a41302c..ba0003c4631 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt
@@ -54,7 +54,7 @@ import org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.contains
import org.jetbrains.kotlin.resolve.BindingContext
-import org.jetbrains.kotlin.resolve.TargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.resolve.diagnostics.KotlinSuppressCache
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KtFileClassProviderImpl.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KtFileClassProviderImpl.kt
index b14d14f2c90..cf022c9fc74 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KtFileClassProviderImpl.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KtFileClassProviderImpl.kt
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtFileClassProvider
import org.jetbrains.kotlin.psi.analysisContext
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.isJvm
class KtFileClassProviderImpl(val kotlinAsJavaSupport: KotlinAsJavaSupport) :
KtFileClassProvider {
@@ -40,7 +40,7 @@ class KtFileClassProviderImpl(val kotlinAsJavaSupport: KotlinAsJavaSupport) :
// common files might be in fact compiled to jvm and thus correspond to a PsiClass
// this API does not provide context (like GSS) to be able to determine if this file is in fact seen through a jvm module
// this also fixes a problem where a Java JUnit run configuration producer would produce run configurations for a common file
- if (moduleInfo.platform !is JvmPlatform) return emptyArray()
+ if (!moduleInfo.platform.isJvm()) return emptyArray()
val jvmClassInfo = JvmFileClassUtil.getFileClassInfoNoResolve(file)
val fileClassFqName = file.javaFileFacadeFqName
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/PerFileAnalysisCache.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/PerFileAnalysisCache.kt
index 876b4a3514c..0aa52aa3c92 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/PerFileAnalysisCache.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/PerFileAnalysisCache.kt
@@ -23,7 +23,6 @@ import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElement
import com.intellij.psi.util.PsiTreeUtil
import org.jetbrains.kotlin.analyzer.AnalysisResult
-import org.jetbrains.kotlin.config.JvmTarget
import org.jetbrains.kotlin.container.ComponentProvider
import org.jetbrains.kotlin.container.get
import org.jetbrains.kotlin.context.GlobalContext
@@ -33,14 +32,12 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils
import org.jetbrains.kotlin.frontend.di.createContainerForLazyBodyResolve
import org.jetbrains.kotlin.idea.caches.project.getModuleInfo
-import org.jetbrains.kotlin.idea.compiler.IDELanguageSettingsProvider
import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
import org.jetbrains.kotlin.idea.project.findCompilerServices
import org.jetbrains.kotlin.idea.project.languageVersionSettings
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf
import org.jetbrains.kotlin.resolve.*
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
import java.util.*
@@ -190,10 +187,8 @@ private object KotlinResolveDataProvider {
val moduleInfo = analyzableElement.containingKtFile.getModuleInfo()
+ // TODO: should return proper platform!
val targetPlatform = moduleInfo.platform ?: TargetPlatformDetector.getPlatform(analyzableElement.containingKtFile)
- val targetPlatformVersion = IDELanguageSettingsProvider.getTargetPlatform(moduleInfo, project).let {
- if (targetPlatform == JvmPlatform && it !is JvmTarget) JvmTarget.DEFAULT else it
- }
val lazyTopDownAnalyzer = createContainerForLazyBodyResolve(
//TODO: should get ModuleContext
@@ -202,7 +197,6 @@ private object KotlinResolveDataProvider {
trace,
targetPlatform,
bodyResolveCache,
- targetPlatformVersion,
targetPlatform.findCompilerServices,
analyzableElement.languageVersionSettings
).get()
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 a7876dad966..034167e5823 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,7 +25,6 @@ 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
@@ -41,11 +40,13 @@ import org.jetbrains.kotlin.idea.project.IdeaEnvironment
import org.jetbrains.kotlin.load.java.structure.JavaClass
import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl
import org.jetbrains.kotlin.platform.idePlatformKind
+import org.jetbrains.kotlin.platform.isCommon
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
+import org.jetbrains.kotlin.platform.jvm.isJvm
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.CompositeBindingContext
import org.jetbrains.kotlin.resolve.jvm.JvmPlatformParameters
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
internal class ProjectResolutionFacade(
@@ -125,7 +126,7 @@ internal class ProjectResolutionFacade(
packagePartProviderFactory = { IDEPackagePartProvider(it.moduleContentScope) },
moduleByJavaClass = { javaClass: JavaClass ->
val psiClass = (javaClass as JavaClassImpl).psi
- psiClass.getPlatformModuleInfo(JvmPlatform)?.platformModule ?: psiClass.getNullableModuleInfo()
+ psiClass.getPlatformModuleInfo(JvmPlatforms.defaultJvmPlatform)?.platformModule ?: psiClass.getNullableModuleInfo()
}
)
@@ -144,9 +145,9 @@ internal class ProjectResolutionFacade(
platform.idePlatformKind.resolution.resolverForModuleFactory
},
platformParameters = { platform ->
- when (platform) {
- is JvmPlatform -> jvmPlatformParameters
- is CommonPlatform -> commonPlatformParameters
+ when {
+ platform.isJvm() -> jvmPlatformParameters
+ platform.isCommon() -> commonPlatformParameters
else -> PlatformAnalysisParameters.Empty
}
},
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ResolutionFacadeWithDebugInfo.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ResolutionFacadeWithDebugInfo.kt
index 31c32a464e7..92e3845f3b8 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ResolutionFacadeWithDebugInfo.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ResolutionFacadeWithDebugInfo.kt
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.BindingContext
-import org.jetbrains.kotlin.resolve.TargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/packageOracles.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/packageOracles.kt
index 1bbc6a4bc8e..caa62727124 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/packageOracles.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/packageOracles.kt
@@ -28,14 +28,14 @@ import org.jetbrains.kotlin.idea.caches.project.projectSourceModules
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.isSubpackageOf
import org.jetbrains.kotlin.resolve.jvm.KotlinJavaPsiFacade
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.isJvm
class IdePackageOracleFactory(val project: Project) : PackageOracleFactory {
override fun createOracle(moduleInfo: ModuleInfo): PackageOracle {
if (moduleInfo !is IdeaModuleInfo) return PackageOracle.Optimistic
- return when (moduleInfo.platform) {
- JvmPlatform -> when (moduleInfo.moduleOrigin) {
+ return when {
+ moduleInfo.platform.isJvm() -> when (moduleInfo.moduleOrigin) {
ModuleOrigin.LIBRARY -> JavaPackagesOracle(moduleInfo, project)
ModuleOrigin.MODULE -> JvmSourceOracle(moduleInfo, project)
ModuleOrigin.OTHER -> PackageOracle.Optimistic
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/util/JavaResolveExtension.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/util/JavaResolveExtension.kt
index 27b2daee012..0f2520a823d 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/util/JavaResolveExtension.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/util/JavaResolveExtension.kt
@@ -34,8 +34,8 @@ import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.psi.psiUtil.parameterIndex
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.resolve.scopes.MemberScope
fun PsiMethod.getJavaMethodDescriptor(): FunctionDescriptor? = javaResolutionFacade()?.let { getJavaMethodDescriptor(it) }
@@ -154,7 +154,7 @@ fun PsiElement.hasJavaResolutionFacade(): Boolean = this.originalElement.contain
fun PsiElement.javaResolutionFacade() =
KotlinCacheService.getInstance(project).getResolutionFacadeByFile(
this.originalElement.containingFile ?: reportCouldNotCreateJavaFacade(),
- JvmPlatform
+ JvmPlatforms.defaultJvmPlatform
)
private fun PsiElement.reportCouldNotCreateJavaFacade(): Nothing =
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/compiler/IDELanguageSettingsProvider.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/compiler/IDELanguageSettingsProvider.kt
index d40ec104860..7870b826e52 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/compiler/IDELanguageSettingsProvider.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/compiler/IDELanguageSettingsProvider.kt
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.cli.common.messages.MessageCollector
import org.jetbrains.kotlin.config.JvmTarget
import org.jetbrains.kotlin.config.KotlinFacetSettingsProvider
import org.jetbrains.kotlin.config.LanguageVersionSettings
-import org.jetbrains.kotlin.config.TargetPlatformVersion
+import org.jetbrains.kotlin.platform.TargetPlatformVersion
import org.jetbrains.kotlin.idea.caches.project.*
import org.jetbrains.kotlin.idea.project.getLanguageVersionSettings
import org.jetbrains.kotlin.idea.project.languageVersionSettings
@@ -72,6 +72,7 @@ object IDELanguageSettingsProvider : LanguageSettingsProvider {
return result
}
+ // TODO(dsavvinov): get rid of this method; instead store proper instance of TargetPlatformVersion in platform-instance
override fun getTargetPlatform(moduleInfo: ModuleInfo, project: Project): TargetPlatformVersion =
when (moduleInfo) {
is ModuleSourceInfo -> moduleInfo.module.platform?.version ?: TargetPlatformVersion.NoVersion
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 3c3f75ed50e..12f82d4f088 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,7 +19,6 @@ 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
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/classFile/DeserializerForClassfileDecompiler.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/classFile/DeserializerForClassfileDecompiler.kt
index 91af3586794..d9730716947 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/classFile/DeserializerForClassfileDecompiler.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/classFile/DeserializerForClassfileDecompiler.kt
@@ -35,8 +35,6 @@ import org.jetbrains.kotlin.load.kotlin.KotlinClassFinder.Result.KotlinClass
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
-import org.jetbrains.kotlin.resolve.TargetPlatform
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.serialization.deserialization.ClassData
import org.jetbrains.kotlin.serialization.deserialization.ClassDataFinder
import org.jetbrains.kotlin.serialization.deserialization.DeserializationComponents
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/common/KotlinMetadataDeserializerForDecompiler.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/common/KotlinMetadataDeserializerForDecompiler.kt
index a78cdb5da49..641205ba27c 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/common/KotlinMetadataDeserializerForDecompiler.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/common/KotlinMetadataDeserializerForDecompiler.kt
@@ -29,7 +29,6 @@ import org.jetbrains.kotlin.metadata.ProtoBuf
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
import org.jetbrains.kotlin.metadata.deserialization.NameResolver
import org.jetbrains.kotlin.name.FqName
-import org.jetbrains.kotlin.resolve.TargetPlatform
import org.jetbrains.kotlin.serialization.SerializerExtensionProtocol
import org.jetbrains.kotlin.serialization.deserialization.*
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPackageMemberScope
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/js/KotlinJavaScriptMetaFileDecompiler.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/js/KotlinJavaScriptMetaFileDecompiler.kt
index 5d8fc0b7e11..af97f18216b 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/js/KotlinJavaScriptMetaFileDecompiler.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/js/KotlinJavaScriptMetaFileDecompiler.kt
@@ -19,7 +19,6 @@ package org.jetbrains.kotlin.idea.decompiler.js
import com.intellij.openapi.vfs.VirtualFile
import org.jetbrains.kotlin.idea.decompiler.common.FileWithMetadata
import org.jetbrains.kotlin.idea.decompiler.common.KotlinMetadataDecompiler
-import org.jetbrains.kotlin.js.resolve.JsPlatform
import org.jetbrains.kotlin.metadata.ProtoBuf
import org.jetbrains.kotlin.metadata.js.JsProtoBuf
import org.jetbrains.kotlin.psi.stubs.KotlinStubVersions
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 a142bf5e500..f5cc71c17d7 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,7 +18,6 @@ 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
@@ -35,6 +34,7 @@ import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.debugText.getDebugText
+import org.jetbrains.kotlin.platform.isCommon
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
object SourceNavigationHelper {
@@ -75,10 +75,10 @@ object SourceNavigationHelper {
private fun BinaryModuleInfo.associatedCommonLibraries(): List {
val platform = platform
- if (platform == null || platform is CommonPlatform) return emptyList()
+ if (platform == null || platform.isCommon()) return emptyList()
return dependencies().filterIsInstance().filter {
- it.platform is CommonPlatform
+ it.platform.isCommon()
}
}
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DeserializerForDecompilerBase.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DeserializerForDecompilerBase.kt
index b696fb75b2a..7534cfff79d 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DeserializerForDecompilerBase.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DeserializerForDecompilerBase.kt
@@ -24,7 +24,6 @@ import org.jetbrains.kotlin.descriptors.impl.MutablePackageFragmentDescriptor
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
-import org.jetbrains.kotlin.resolve.TargetPlatform
import org.jetbrains.kotlin.serialization.deserialization.DeserializationComponents
import org.jetbrains.kotlin.serialization.deserialization.LocalClassifierTypeSettings
import org.jetbrains.kotlin.storage.LockBasedStorageManager
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 8674f87ea29..2eed2728606 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,15 +24,14 @@ 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
import org.jetbrains.kotlin.idea.vfilefinder.getLibraryKindForJar
-import org.jetbrains.kotlin.js.resolve.JsPlatform
+import org.jetbrains.kotlin.platform.CommonPlatforms
import org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider
-import org.jetbrains.kotlin.resolve.TargetPlatform
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.js.JsPlatforms
import org.jetbrains.kotlin.utils.PathUtil
import java.util.jar.Attributes
import java.util.regex.Pattern
@@ -43,14 +42,14 @@ interface KotlinLibraryKind {
object JSLibraryKind : PersistentLibraryKind("kotlin.js"), KotlinLibraryKind {
override val compilerPlatform: TargetPlatform
- get() = JsPlatform
+ get() = JsPlatforms.defaultJsPlatform
override fun createDefaultProperties() = DummyLibraryProperties.INSTANCE!!
}
object CommonLibraryKind : PersistentLibraryKind("kotlin.common"), KotlinLibraryKind {
override val compilerPlatform: TargetPlatform
- get() = CommonPlatform
+ get() = CommonPlatforms.defaultCommonPlatform
override fun createDefaultProperties() = DummyLibraryProperties.INSTANCE!!
}
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/DuplicateJvmSignatureAnnotator.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/DuplicateJvmSignatureAnnotator.kt
index d692a664fd1..56818c1b443 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/DuplicateJvmSignatureAnnotator.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/DuplicateJvmSignatureAnnotator.kt
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.psi.KtFile
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.isJvm
class DuplicateJvmSignatureAnnotator : Annotator {
override fun annotate(element: PsiElement, holder: AnnotationHolder) {
@@ -34,7 +34,7 @@ class DuplicateJvmSignatureAnnotator : Annotator {
if (!ProjectRootsUtil.isInProjectSource(element)) return
val file = element.containingFile
- if (file !is KtFile || TargetPlatformDetector.getPlatform(file) !== JvmPlatform) return
+ if (file !is KtFile || !TargetPlatformDetector.getPlatform(file).isJvm()) return
val otherDiagnostics = when (element) {
is KtDeclaration -> element.analyzeWithContent()
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/Platform.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/Platform.kt
index d396015956c..a5b9fdefffe 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/Platform.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/Platform.kt
@@ -49,7 +49,8 @@ import org.jetbrains.kotlin.platform.impl.isCommon
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.UserDataProperty
-import org.jetbrains.kotlin.resolve.TargetPlatform
+import org.jetbrains.kotlin.config.JvmTarget
+import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.utils.Jsr305State
import java.io.File
@@ -212,6 +213,7 @@ private fun Module.computeLanguageVersionSettings(): LanguageVersionSettings {
val Module.platform: IdePlatform<*, *>?
get() = KotlinFacetSettingsProvider.getInstance(project).getInitializedSettings(this).platform ?: project.platform
+// FIXME(dsavvinov): this logic is clearly wrong in MPP environment; review and fix
val Project.platform: IdePlatform<*, *>?
get() {
val jvmTarget = Kotlin2JvmCompilerArgumentsHolder.getInstance(this).settings.jvmTarget ?: return null
@@ -265,12 +267,4 @@ val PsiElement.languageVersionSettings: LanguageVersionSettings
return LanguageVersionSettingsImpl.DEFAULT
}
return IDELanguageSettingsProvider.getLanguageVersionSettings(this.getModuleInfo(), project)
- }
-
-val KtElement.jvmTarget: JvmTarget
- get() {
- if (ServiceManager.getService(project, ProjectFileIndex::class.java) == null) {
- return JvmTarget.DEFAULT
- }
- return IDELanguageSettingsProvider.getTargetPlatform(this.getModuleInfo(), project) as? JvmTarget ?: JvmTarget.DEFAULT
- }
+ }
\ No newline at end of file
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/ProjectStructureUtil.java b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/ProjectStructureUtil.java
index 3dc23c2068d..850d80ac068 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/ProjectStructureUtil.java
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/ProjectStructureUtil.java
@@ -25,7 +25,7 @@ import com.intellij.psi.util.CachedValuesManager;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.platform.IdePlatform;
import org.jetbrains.kotlin.platform.IdePlatformKindUtil;
-import org.jetbrains.kotlin.resolve.TargetPlatform;
+import org.jetbrains.kotlin.platform.TargetPlatform;
public class ProjectStructureUtil {
private static final Key> PLATFORM_FOR_MODULE = Key.create("PLATFORM_FOR_MODULE");
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/ResolveElementCache.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/ResolveElementCache.kt
index 6425be50ed6..64eda14d978 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/ResolveElementCache.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/ResolveElementCache.kt
@@ -22,6 +22,7 @@ import com.intellij.psi.util.CachedValueProvider
import com.intellij.psi.util.CachedValuesManager
import com.intellij.psi.util.PsiModificationTracker
import com.intellij.util.containers.ContainerUtil
+import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.cfg.ControlFlowInformationProvider
import org.jetbrains.kotlin.container.get
import org.jetbrains.kotlin.context.SimpleGlobalContext
@@ -717,7 +718,6 @@ class ResolveElementCache(
trace,
targetPlatform,
statementFilter,
- file.jvmTarget,
targetPlatform.findCompilerServices,
file.languageVersionSettings
).get()
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/TargetPlatformDetector.java b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/TargetPlatformDetector.java
index 5e2b32bfd80..5c8242466c5 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/TargetPlatformDetector.java
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/TargetPlatformDetector.java
@@ -22,15 +22,17 @@ import com.intellij.openapi.roots.ProjectFileIndex;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
+import kotlin.collections.CollectionsKt;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider;
import org.jetbrains.kotlin.platform.IdePlatform;
import org.jetbrains.kotlin.platform.IdePlatformKind;
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms;
import org.jetbrains.kotlin.psi.KtCodeFragment;
import org.jetbrains.kotlin.psi.KtFile;
import org.jetbrains.kotlin.psi.KtPsiFactoryKt;
-import org.jetbrains.kotlin.resolve.TargetPlatform;
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform;
+import org.jetbrains.kotlin.platform.TargetPlatform;
+import org.jetbrains.kotlin.platform.SimplePlatform;
import org.jetbrains.kotlin.scripting.definitions.DefinitionsKt;
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition;
@@ -56,7 +58,8 @@ public class TargetPlatformDetector {
PsiElement context = KtPsiFactoryKt.getAnalysisContext(file);
if (context != null) {
PsiFile contextFile = context.getContainingFile();
- return contextFile instanceof KtFile ? getPlatform((KtFile) contextFile) : JvmPlatform.INSTANCE;
+ // TODO(dsavvinov): Get default platform with proper target
+ return contextFile instanceof KtFile ? getPlatform((KtFile) contextFile) : JvmPlatforms.INSTANCE.getDefaultJvmPlatform();
}
if (file.isScript()) {
@@ -65,7 +68,9 @@ public class TargetPlatformDetector {
String platformNameFromScriptDefinition = scriptDefinition.getPlatform();
for (IdePlatform platform : IdePlatformKind.Companion.getAll_PLATFORMS()) {
TargetPlatform compilerPlatform = platform.getKind().getCompilerPlatform();
- if (compilerPlatform.getPlatformName().equals(platformNameFromScriptDefinition)) {
+ // FIXME(dsavvinov): get rid of matching by name
+ SimplePlatform simplePlatform = CollectionsKt.single(compilerPlatform);
+ if (simplePlatform.getPlatformName().equals(platformNameFromScriptDefinition)) {
return compilerPlatform;
}
}
diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/compilerServices.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/compilerServices.kt
index c9cfc213f3b..de4566a731f 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/compilerServices.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/compilerServices.kt
@@ -5,24 +5,24 @@
package org.jetbrains.kotlin.idea.project
-import org.jetbrains.kotlin.analyzer.common.CommonPlatform
import org.jetbrains.kotlin.analyzer.common.CommonPlatformCompilerServices
-import org.jetbrains.kotlin.js.resolve.JsPlatform
import org.jetbrains.kotlin.js.resolve.JsPlatformCompilerServices
-import org.jetbrains.kotlin.resolve.PlatformDependentCompilerServices
-import org.jetbrains.kotlin.resolve.TargetPlatform
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.isCommon
+import org.jetbrains.kotlin.platform.js.isJs
+import org.jetbrains.kotlin.platform.jvm.isJvm
+import org.jetbrains.kotlin.platform.konan.isNative
+import org.jetbrains.kotlin.resolve.*
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformCompilerServices
-import org.jetbrains.kotlin.resolve.konan.platform.KonanPlatform
import org.jetbrains.kotlin.resolve.konan.platform.NativePlatformCompilerServices
import java.lang.IllegalStateException
val TargetPlatform.findCompilerServices: PlatformDependentCompilerServices
get() =
- when (this) {
- is JvmPlatform -> JvmPlatformCompilerServices
- is JsPlatform -> JsPlatformCompilerServices
- is KonanPlatform -> NativePlatformCompilerServices
- is CommonPlatform -> CommonPlatformCompilerServices
+ when {
+ isJvm() -> JvmPlatformCompilerServices
+ isJs() -> JsPlatformCompilerServices
+ isNative() -> NativePlatformCompilerServices
+ isCommon() -> CommonPlatformCompilerServices
else -> throw IllegalStateException("Unknown platform $this")
}
\ No newline at end of file
diff --git a/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidGradleModuleConfigurator.kt b/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidGradleModuleConfigurator.kt
index 42e23695d19..92013ea7bf1 100644
--- a/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidGradleModuleConfigurator.kt
+++ b/idea/idea-android/src/org/jetbrains/kotlin/android/configure/KotlinAndroidGradleModuleConfigurator.kt
@@ -17,14 +17,14 @@ import org.jetbrains.kotlin.idea.configuration.getBuildSystemType
import org.jetbrains.kotlin.idea.util.projectStructure.version
import org.jetbrains.kotlin.idea.versions.MAVEN_STDLIB_ID_JDK7
import org.jetbrains.kotlin.idea.versions.hasJreSpecificRuntime
-import org.jetbrains.kotlin.resolve.TargetPlatform
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
+import org.jetbrains.kotlin.platform.TargetPlatform
class KotlinAndroidGradleModuleConfigurator internal constructor() : KotlinWithGradleConfigurator() {
override val name: String = NAME
- override val targetPlatform: TargetPlatform = JvmPlatform
+ override val targetPlatform: TargetPlatform = JvmPlatforms.defaultJvmPlatform
override val presentableText: String = "Android with Gradle"
diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/AllClassesCompletion.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/AllClassesCompletion.kt
index c53f1d37a37..b81c58ace9f 100644
--- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/AllClassesCompletion.kt
+++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/AllClassesCompletion.kt
@@ -33,7 +33,7 @@ import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
import org.jetbrains.kotlin.psi.KtFile
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.isJvm
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
import org.jetbrains.kotlin.resolve.scopes.MemberScope
import org.jetbrains.kotlin.resolve.scopes.getDescriptorsFiltered
@@ -68,7 +68,7 @@ class AllClassesCompletion(private val parameters: CompletionParameters,
.forEach { classifierDescriptorCollector(it) }
}
- if (TargetPlatformDetector.getPlatform(parameters.originalFile as KtFile) == JvmPlatform) {
+ if (TargetPlatformDetector.getPlatform(parameters.originalFile as KtFile).isJvm()) {
addAdaptedJavaCompletion(javaClassCollector)
}
}
diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicCompletionSession.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicCompletionSession.kt
index 7e337211b49..1da913d547c 100644
--- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicCompletionSession.kt
+++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicCompletionSession.kt
@@ -60,7 +60,7 @@ import org.jetbrains.kotlin.psi.psiUtil.*
import org.jetbrains.kotlin.renderer.render
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.descriptorUtil.*
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.isJvm
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindExclude
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
@@ -270,7 +270,7 @@ class BasicCompletionSession(
val packageNames = PackageIndexUtil.getSubPackageFqNames(FqName.ROOT, searchScope, project, prefixMatcher.asNameFilter())
.toMutableSet()
- if (TargetPlatformDetector.getPlatform(parameters.originalFile as KtFile) == JvmPlatform) {
+ if (TargetPlatformDetector.getPlatform(parameters.originalFile as KtFile).isJvm()) {
JavaPsiFacade.getInstance(project).findPackage("")?.getSubPackages(searchScope)?.forEach { psiPackage ->
val name = psiPackage.name
if (Name.isValidIdentifier(name!!)) {
diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionSession.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionSession.kt
index ff16e83b727..25d2130c651 100644
--- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionSession.kt
+++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionSession.kt
@@ -28,7 +28,6 @@ import com.intellij.patterns.PatternCondition
import com.intellij.patterns.StandardPatterns
import com.intellij.psi.search.GlobalSearchScope
import com.intellij.util.ProcessingContext
-import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.idea.caches.project.ModuleOrigin
import org.jetbrains.kotlin.idea.caches.project.OriginCapability
@@ -38,15 +37,13 @@ import org.jetbrains.kotlin.idea.codeInsight.ReferenceVariantsHelper
import org.jetbrains.kotlin.idea.core.*
import org.jetbrains.kotlin.idea.imports.importableFqName
import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
-import org.jetbrains.kotlin.idea.project.languageVersionSettings
import org.jetbrains.kotlin.idea.references.mainReference
import org.jetbrains.kotlin.idea.util.*
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.resolve.BindingContext
-import org.jetbrains.kotlin.resolve.MultiTargetPlatform
import org.jetbrains.kotlin.resolve.descriptorUtil.module
-import org.jetbrains.kotlin.resolve.getMultiTargetPlatform
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.isCommon
+import org.jetbrains.kotlin.platform.jvm.isJvm
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
import org.jetbrains.kotlin.resolve.scopes.receivers.ExpressionReceiver
import org.jetbrains.kotlin.types.TypeUtils
@@ -88,7 +85,7 @@ abstract class CompletionSession(
protected val resolutionFacade = file.getResolutionFacade()
protected val moduleDescriptor = resolutionFacade.moduleDescriptor
protected val project = position.project
- protected val isJvmModule = TargetPlatformDetector.getPlatform(parameters.originalFile as KtFile) == JvmPlatform
+ protected val isJvmModule = TargetPlatformDetector.getPlatform(parameters.originalFile as KtFile).isJvm()
protected val isDebuggerContext = file is KtCodeFragment
protected val nameExpression: KtSimpleNameExpression?
@@ -149,7 +146,7 @@ abstract class CompletionSession(
{ CompletionBenchmarkSink.instance.onFlush(this) },
prefixMatcher, parameters, resultSet,
createSorter(), (file as? KtCodeFragment)?.extraCompletionFilter,
- moduleDescriptor.getMultiTargetPlatform() === MultiTargetPlatform.Common
+ moduleDescriptor.platform.isCommon()
)
}
diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractCompiledKotlinInJavaCompletionTest.kt b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractCompiledKotlinInJavaCompletionTest.kt
index 63cc4309353..05e72050d71 100644
--- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractCompiledKotlinInJavaCompletionTest.kt
+++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractCompiledKotlinInJavaCompletionTest.kt
@@ -7,10 +7,10 @@ package org.jetbrains.kotlin.idea.completion.test
import com.intellij.codeInsight.completion.CompletionType
import org.jetbrains.kotlin.idea.test.SdkAndMockLibraryProjectDescriptor
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
abstract class AbstractCompiledKotlinInJavaCompletionTest : KotlinFixtureCompletionBaseTestCase() {
- override fun getPlatform() = JvmPlatform
+ override fun getPlatform() = JvmPlatforms.defaultJvmPlatform
override fun getProjectDescriptor() =
SdkAndMockLibraryProjectDescriptor(COMPLETION_TEST_DATA_BASE_PATH + "/injava/mockLib", false)
diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractCompletionIncrementalResolveTest.kt b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractCompletionIncrementalResolveTest.kt
index 9dcc07d319c..8a7e9a79132 100644
--- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractCompletionIncrementalResolveTest.kt
+++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractCompletionIncrementalResolveTest.kt
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.idea.completion.CompletionBindingContextProvider
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.test.InTextDirectivesUtils
import org.jetbrains.kotlin.test.KotlinTestUtils
import java.io.File
@@ -82,7 +82,7 @@ abstract class AbstractCompletionIncrementalResolveTest : KotlinLightCodeInsight
}
testCompletion(FileUtil.loadFile(file, true),
- JvmPlatform,
+ JvmPlatforms.defaultJvmPlatform,
{ completionType, count -> myFixture.complete(completionType, count) },
additionalValidDirectives = listOf(TYPE_DIRECTIVE_PREFIX, BACKSPACES_DIRECTIVE_PREFIX))
diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractJSBasicCompletionTest.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractJSBasicCompletionTest.java
index 68cda248c5f..4c82d5f4a12 100644
--- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractJSBasicCompletionTest.java
+++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractJSBasicCompletionTest.java
@@ -9,8 +9,8 @@ import com.intellij.codeInsight.completion.CompletionType;
import com.intellij.testFramework.LightProjectDescriptor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.idea.test.KotlinStdJSProjectDescriptor;
-import org.jetbrains.kotlin.js.resolve.JsPlatform;
-import org.jetbrains.kotlin.resolve.TargetPlatform;
+import org.jetbrains.kotlin.platform.TargetPlatform;
+import org.jetbrains.kotlin.platform.js.JsPlatforms;
public abstract class AbstractJSBasicCompletionTest extends KotlinFixtureCompletionBaseTestCase {
@NotNull
@@ -22,7 +22,7 @@ public abstract class AbstractJSBasicCompletionTest extends KotlinFixtureComplet
@NotNull
@Override
public TargetPlatform getPlatform() {
- return JsPlatform.INSTANCE;
+ return JsPlatforms.INSTANCE.getDefaultJsPlatform();
}
@NotNull
diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractJvmBasicCompletionTest.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractJvmBasicCompletionTest.java
index f4b8372c5be..0c9ee9e4bac 100644
--- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractJvmBasicCompletionTest.java
+++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractJvmBasicCompletionTest.java
@@ -9,8 +9,8 @@ import com.intellij.codeInsight.completion.CompletionType;
import com.intellij.testFramework.LightProjectDescriptor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor;
-import org.jetbrains.kotlin.resolve.TargetPlatform;
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform;
+import org.jetbrains.kotlin.platform.TargetPlatform;
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms;
public abstract class AbstractJvmBasicCompletionTest extends KotlinFixtureCompletionBaseTestCase {
@NotNull
@@ -22,7 +22,7 @@ public abstract class AbstractJvmBasicCompletionTest extends KotlinFixtureComple
@NotNull
@Override
public TargetPlatform getPlatform() {
- return JvmPlatform.INSTANCE;
+ return JvmPlatforms.INSTANCE.getDefaultJvmPlatform();
}
@NotNull
diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractJvmSmartCompletionTest.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractJvmSmartCompletionTest.java
index 600414372a4..10fb0e9a5b1 100644
--- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractJvmSmartCompletionTest.java
+++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractJvmSmartCompletionTest.java
@@ -9,8 +9,8 @@ import com.intellij.codeInsight.completion.CompletionType;
import com.intellij.testFramework.LightProjectDescriptor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor;
-import org.jetbrains.kotlin.resolve.TargetPlatform;
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform;
+import org.jetbrains.kotlin.platform.TargetPlatform;
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms;
public abstract class AbstractJvmSmartCompletionTest extends KotlinFixtureCompletionBaseTestCase {
@NotNull
@@ -22,7 +22,7 @@ public abstract class AbstractJvmSmartCompletionTest extends KotlinFixtureComple
@NotNull
@Override
public TargetPlatform getPlatform() {
- return JvmPlatform.INSTANCE;
+ return JvmPlatforms.INSTANCE.getDefaultJvmPlatform();
}
@NotNull
diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractJvmWithLibBasicCompletionTest.kt b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractJvmWithLibBasicCompletionTest.kt
index d60383cd8a3..062b27bd3c8 100644
--- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractJvmWithLibBasicCompletionTest.kt
+++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractJvmWithLibBasicCompletionTest.kt
@@ -9,7 +9,7 @@ import com.intellij.codeInsight.completion.CompletionType
import com.intellij.testFramework.LightProjectDescriptor
import org.jetbrains.kotlin.idea.test.SdkAndMockLibraryProjectDescriptor
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
abstract class AbstractJvmWithLibBasicCompletionTest : KotlinFixtureCompletionBaseTestCase() {
private val TEST_PATH = COMPLETION_TEST_DATA_BASE_PATH + "/basic/withLib"
@@ -21,6 +21,6 @@ abstract class AbstractJvmWithLibBasicCompletionTest : KotlinFixtureCompletionBa
return SdkAndMockLibraryProjectDescriptor(TEST_PATH + "/" + getTestName(false) + "Src", false)
}
- override fun getPlatform() = JvmPlatform
+ override fun getPlatform() = JvmPlatforms.defaultJvmPlatform
override fun defaultCompletionType() = CompletionType.BASIC
}
diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractKeywordCompletionTest.kt b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractKeywordCompletionTest.kt
index 90340332640..07b57baddae 100644
--- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractKeywordCompletionTest.kt
+++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractKeywordCompletionTest.kt
@@ -10,10 +10,10 @@ import com.intellij.codeInsight.lookup.LookupElement
import org.jetbrains.kotlin.idea.completion.KeywordLookupObject
import org.jetbrains.kotlin.idea.test.KotlinLightProjectDescriptor
import org.jetbrains.kotlin.idea.test.KotlinProjectDescriptorWithFacet
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
abstract class AbstractKeywordCompletionTest : KotlinFixtureCompletionBaseTestCase() {
- override fun getPlatform() = JvmPlatform
+ override fun getPlatform() = JvmPlatforms.defaultJvmPlatform
override fun defaultCompletionType() = CompletionType.BASIC
diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractKotlinSourceInJavaCompletionTest.kt b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractKotlinSourceInJavaCompletionTest.kt
index 42bd2edd869..f9131c3e5ae 100644
--- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractKotlinSourceInJavaCompletionTest.kt
+++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractKotlinSourceInJavaCompletionTest.kt
@@ -7,14 +7,12 @@ package org.jetbrains.kotlin.idea.completion.test
import com.intellij.codeInsight.completion.CompletionType
import com.intellij.openapi.util.io.FileUtil
-import com.intellij.openapi.vfs.VirtualFile
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase
-import org.apache.commons.io.FileUtils
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import java.io.File
abstract class AbstractKotlinSourceInJavaCompletionTest : KotlinFixtureCompletionBaseTestCase() {
- override fun getPlatform() = JvmPlatform
+ override fun getPlatform() = JvmPlatforms.defaultJvmPlatform
override fun doTest(testPath: String) {
val mockPath = RELATIVE_COMPLETION_TEST_DATA_BASE_PATH + "/injava/mockLib"
diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractKotlinStdLibInJavaCompletionTest.kt b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractKotlinStdLibInJavaCompletionTest.kt
index cf059f042f8..ed836a6ae5d 100644
--- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractKotlinStdLibInJavaCompletionTest.kt
+++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractKotlinStdLibInJavaCompletionTest.kt
@@ -7,10 +7,10 @@ package org.jetbrains.kotlin.idea.completion.test
import com.intellij.codeInsight.completion.CompletionType
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
abstract class AbstractKotlinStdLibInJavaCompletionTest : KotlinFixtureCompletionBaseTestCase() {
- override fun getPlatform() = JvmPlatform
+ override fun getPlatform() = JvmPlatforms.defaultJvmPlatform
override fun getProjectDescriptor() = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE
override fun defaultCompletionType() = CompletionType.BASIC
}
\ No newline at end of file
diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractMultiFileJvmBasicCompletionTest.kt b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractMultiFileJvmBasicCompletionTest.kt
index 6e0b7965319..32cbac30079 100644
--- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractMultiFileJvmBasicCompletionTest.kt
+++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractMultiFileJvmBasicCompletionTest.kt
@@ -7,14 +7,14 @@ package org.jetbrains.kotlin.idea.completion.test
import com.intellij.codeInsight.completion.CompletionType
import org.jetbrains.kotlin.idea.test.AstAccessControl
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
abstract class AbstractMultiFileJvmBasicCompletionTest : KotlinCompletionTestCase() {
protected fun doTest(testPath: String) {
configureByFile(getTestName(false) + ".kt", "")
val shouldFail = testPath.contains("NoSpecifiedType")
AstAccessControl.testWithControlledAccessToAst(shouldFail, getFile().getVirtualFile(), getProject(), getTestRootDisposable(), {
- testCompletion(file.text, JvmPlatform, { completionType, invocationCount ->
+ testCompletion(file.text, JvmPlatforms.defaultJvmPlatform, { completionType, invocationCount ->
setType(completionType)
complete(invocationCount)
myItems
diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractMultiFileSmartCompletionTest.kt b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractMultiFileSmartCompletionTest.kt
index 681d314c027..b55f7478cce 100644
--- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractMultiFileSmartCompletionTest.kt
+++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/AbstractMultiFileSmartCompletionTest.kt
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.idea.completion.test
import com.intellij.codeInsight.completion.CompletionType
import org.jetbrains.kotlin.idea.test.AstAccessControl
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
abstract class AbstractMultiFileSmartCompletionTest : KotlinCompletionTestCase() {
override fun setUp() {
@@ -18,7 +18,7 @@ abstract class AbstractMultiFileSmartCompletionTest : KotlinCompletionTestCase()
protected fun doTest(testPath: String) {
configureByFile(getTestName(false) + ".kt", "")
AstAccessControl.testWithControlledAccessToAst(false, getFile().getVirtualFile(), getProject(), getTestRootDisposable(), {
- testCompletion(file.text, JvmPlatform, { completionType, invocationCount ->
+ testCompletion(file.text, JvmPlatforms.defaultJvmPlatform, { completionType, invocationCount ->
setType(completionType)
complete(invocationCount)
myItems
diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/CompletionTestUtil.kt b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/CompletionTestUtil.kt
index 3bd37ae1f6c..a75c901cc70 100644
--- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/CompletionTestUtil.kt
+++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/CompletionTestUtil.kt
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.idea.completion.test
import com.intellij.codeInsight.CodeInsightSettings
import com.intellij.codeInsight.completion.CompletionType
import com.intellij.codeInsight.lookup.LookupElement
-import org.jetbrains.kotlin.resolve.TargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.junit.Assert
@@ -17,12 +17,12 @@ val RELATIVE_COMPLETION_TEST_DATA_BASE_PATH = "idea/idea-completion/testData"
val COMPLETION_TEST_DATA_BASE_PATH = KotlinTestUtils.getHomeDirectory() + "/" + RELATIVE_COMPLETION_TEST_DATA_BASE_PATH
fun testCompletion(
- fileText: String,
- platform: TargetPlatform?,
- complete: (CompletionType, Int) -> Array?,
- defaultCompletionType: CompletionType = CompletionType.BASIC,
- defaultInvocationCount: Int = 0,
- additionalValidDirectives: Collection = emptyList()
+ fileText: String,
+ platform: TargetPlatform?,
+ complete: (CompletionType, Int) -> Array?,
+ defaultCompletionType: CompletionType = CompletionType.BASIC,
+ defaultInvocationCount: Int = 0,
+ additionalValidDirectives: Collection = emptyList()
) {
testWithAutoCompleteSetting(fileText) {
val completionType = ExpectedCompletionUtils.getCompletionType(fileText) ?: defaultCompletionType
diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/ExpectedCompletionUtils.kt b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/ExpectedCompletionUtils.kt
index c91820933a2..7ad3c4a3235 100644
--- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/ExpectedCompletionUtils.kt
+++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/ExpectedCompletionUtils.kt
@@ -19,9 +19,11 @@ import org.jetbrains.kotlin.idea.completion.LookupElementFactory
import org.jetbrains.kotlin.idea.core.completion.DeclarationLookupObject
import org.jetbrains.kotlin.idea.test.AstAccessControl
import org.jetbrains.kotlin.idea.util.module
-import org.jetbrains.kotlin.js.resolve.JsPlatform
-import org.jetbrains.kotlin.resolve.TargetPlatform
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.js.JsPlatforms
+import org.jetbrains.kotlin.platform.js.isJs
+import org.jetbrains.kotlin.platform.jvm.isJvm
import org.jetbrains.kotlin.test.InTextDirectivesUtils
import org.junit.Assert
import java.util.*
@@ -87,7 +89,7 @@ object ExpectedCompletionUtils {
}
}
- private val UNSUPPORTED_PLATFORM_MESSAGE = "Only $JvmPlatform and $JsPlatform platforms are supported"
+ private val UNSUPPORTED_PLATFORM_MESSAGE = "Only ${JvmPlatforms.defaultJvmPlatform} and ${JsPlatforms.defaultJsPlatform} platforms are supported"
private val EXIST_LINE_PREFIX = "EXIST:"
@@ -135,19 +137,19 @@ object ExpectedCompletionUtils {
AstAccessControl.ALLOW_AST_ACCESS_DIRECTIVE)
fun itemsShouldExist(fileText: String, platform: TargetPlatform?): Array {
- return when (platform) {
- is JvmPlatform -> processProposalAssertions(fileText, EXIST_LINE_PREFIX, EXIST_JAVA_ONLY_LINE_PREFIX)
- JsPlatform -> processProposalAssertions(fileText, EXIST_LINE_PREFIX, EXIST_JS_ONLY_LINE_PREFIX)
- null -> processProposalAssertions(fileText, EXIST_LINE_PREFIX)
+ return when {
+ platform.isJvm() -> processProposalAssertions(fileText, EXIST_LINE_PREFIX, EXIST_JAVA_ONLY_LINE_PREFIX)
+ platform.isJs() -> processProposalAssertions(fileText, EXIST_LINE_PREFIX, EXIST_JS_ONLY_LINE_PREFIX)
+ platform == null -> processProposalAssertions(fileText, EXIST_LINE_PREFIX)
else -> throw IllegalArgumentException(UNSUPPORTED_PLATFORM_MESSAGE)
}
}
fun itemsShouldAbsent(fileText: String, platform: TargetPlatform?): Array {
- return when (platform) {
- is JvmPlatform -> processProposalAssertions(fileText, ABSENT_LINE_PREFIX, ABSENT_JAVA_LINE_PREFIX, EXIST_JS_ONLY_LINE_PREFIX)
- JsPlatform -> processProposalAssertions(fileText, ABSENT_LINE_PREFIX, ABSENT_JS_LINE_PREFIX, EXIST_JAVA_ONLY_LINE_PREFIX)
- null -> processProposalAssertions(fileText, ABSENT_LINE_PREFIX)
+ return when {
+ platform.isJvm() -> processProposalAssertions(fileText, ABSENT_LINE_PREFIX, ABSENT_JAVA_LINE_PREFIX, EXIST_JS_ONLY_LINE_PREFIX)
+ platform.isJs() -> processProposalAssertions(fileText, ABSENT_LINE_PREFIX, ABSENT_JS_LINE_PREFIX, EXIST_JAVA_ONLY_LINE_PREFIX)
+ platform == null -> processProposalAssertions(fileText, ABSENT_LINE_PREFIX)
else -> throw IllegalArgumentException(UNSUPPORTED_PLATFORM_MESSAGE)
}
}
@@ -179,10 +181,10 @@ object ExpectedCompletionUtils {
}
fun getExpectedNumber(fileText: String, platform: TargetPlatform?): Int? {
- return when (platform) {
- null -> InTextDirectivesUtils.getPrefixedInt(fileText, NUMBER_LINE_PREFIX)
- is JvmPlatform -> getPlatformExpectedNumber(fileText, NUMBER_JAVA_LINE_PREFIX)
- JsPlatform -> getPlatformExpectedNumber(fileText, NUMBER_JS_LINE_PREFIX)
+ return when {
+ platform == null -> InTextDirectivesUtils.getPrefixedInt(fileText, NUMBER_LINE_PREFIX)
+ platform.isJvm() -> getPlatformExpectedNumber(fileText, NUMBER_JAVA_LINE_PREFIX)
+ platform.isJs() -> getPlatformExpectedNumber(fileText, NUMBER_JS_LINE_PREFIX)
else -> throw IllegalArgumentException(UNSUPPORTED_PLATFORM_MESSAGE)
}
}
diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/KotlinFixtureCompletionBaseTestCase.kt b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/KotlinFixtureCompletionBaseTestCase.kt
index 6da6dae208d..0e29f575b6b 100644
--- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/KotlinFixtureCompletionBaseTestCase.kt
+++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/KotlinFixtureCompletionBaseTestCase.kt
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.idea.test.CompilerTestDirectives
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
import org.jetbrains.kotlin.idea.test.configureCompilerOptions
import org.jetbrains.kotlin.idea.test.rollbackCompilerOptions
-import org.jetbrains.kotlin.resolve.TargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
import java.io.File
abstract class KotlinFixtureCompletionBaseTestCase : KotlinLightCodeInsightFixtureTestCase() {
diff --git a/idea/idea-gradle-native/src/org/jetbrains/kotlin/ide/konan/gradle/KotlinNativeGradleConfigurator.kt b/idea/idea-gradle-native/src/org/jetbrains/kotlin/ide/konan/gradle/KotlinNativeGradleConfigurator.kt
index a64d5bea7ec..4704ecdb54b 100644
--- a/idea/idea-gradle-native/src/org/jetbrains/kotlin/ide/konan/gradle/KotlinNativeGradleConfigurator.kt
+++ b/idea/idea-gradle-native/src/org/jetbrains/kotlin/ide/konan/gradle/KotlinNativeGradleConfigurator.kt
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.ide.konan.hasKotlinNativeRuntimeInScope
import org.jetbrains.kotlin.idea.configuration.ConfigureKotlinStatus
import org.jetbrains.kotlin.idea.configuration.KotlinWithGradleConfigurator
import org.jetbrains.kotlin.idea.configuration.ModuleSourceRootGroup
-import org.jetbrains.kotlin.resolve.konan.platform.KonanPlatform
+import org.jetbrains.kotlin.platform.konan.KonanPlatforms
open class KotlinNativeGradleConfigurator : KotlinWithGradleConfigurator() {
override fun getKotlinPluginExpression(forKotlinDsl: Boolean): String = ""
@@ -28,7 +28,7 @@ open class KotlinNativeGradleConfigurator : KotlinWithGradleConfigurator() {
override val name: String get() = NAME
- override val targetPlatform get() = KonanPlatform
+ override val targetPlatform get() = KonanPlatforms.defaultKonanPlatform
override val presentableText get() = PRESENTABLE_TEXT
diff --git a/idea/idea-gradle-native/tests/org/jetbrains/kotlin/ide/konan/gradle/GradleNativeLibrariesInIDENamingTest.kt b/idea/idea-gradle-native/tests/org/jetbrains/kotlin/ide/konan/gradle/GradleNativeLibrariesInIDENamingTest.kt
index 7c8e9a86ed7..b966a2a99eb 100644
--- a/idea/idea-gradle-native/tests/org/jetbrains/kotlin/ide/konan/gradle/GradleNativeLibrariesInIDENamingTest.kt
+++ b/idea/idea-gradle-native/tests/org/jetbrains/kotlin/ide/konan/gradle/GradleNativeLibrariesInIDENamingTest.kt
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.idea.project.platform
import org.jetbrains.kotlin.idea.util.projectStructure.allModules
import org.jetbrains.kotlin.konan.library.konanCommonLibraryPath
import org.jetbrains.kotlin.konan.library.konanPlatformLibraryPath
-import org.jetbrains.kotlin.platform.impl.isKotlinNative
+import org.jetbrains.kotlin.platform.konan.isNative
import org.jetbrains.plugins.gradle.util.GradleConstants
import org.junit.Assert.*
import org.junit.Test
@@ -111,7 +111,7 @@ private fun assertValidModule(module: Module, projectRoot: String) {
detectLibraryKind(library.getFiles(OrderRootType.CLASSES)) == NativeLibraryKind
}
- if (module.platform.isKotlinNative) {
+ if (module.platform.isNative()) {
assertFalse("No Kotlin/Native libraries in $module", nativeLibraries.isEmpty())
nativeLibraries.forEach { assertValidNativeLibrary(it, projectRoot) }
diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleModuleConfigurator.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleModuleConfigurator.kt
index d71ee88f97d..bf23d1e2882 100644
--- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleModuleConfigurator.kt
+++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleModuleConfigurator.kt
@@ -16,14 +16,13 @@
package org.jetbrains.kotlin.idea.configuration
-import com.intellij.facet.FacetManager
import com.intellij.openapi.module.Module
import com.intellij.openapi.projectRoots.Sdk
import com.intellij.psi.PsiFile
import org.jetbrains.kotlin.idea.core.isAndroidModule
import org.jetbrains.kotlin.idea.versions.getDefaultJvmTarget
-import org.jetbrains.kotlin.resolve.TargetPlatform
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
class KotlinGradleModuleConfigurator : KotlinWithGradleConfigurator() {
@@ -31,7 +30,7 @@ class KotlinGradleModuleConfigurator : KotlinWithGradleConfigurator() {
get() = NAME
override val targetPlatform: TargetPlatform
- get() = JvmPlatform
+ get() = JvmPlatforms.defaultJvmPlatform
override val presentableText: String
get() = "Java with Gradle"
diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinJsGradleModuleConfigurator.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinJsGradleModuleConfigurator.kt
index 44be31810bd..ab05451ab73 100644
--- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinJsGradleModuleConfigurator.kt
+++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinJsGradleModuleConfigurator.kt
@@ -20,13 +20,13 @@ import com.intellij.openapi.projectRoots.Sdk
import com.intellij.psi.PsiFile
import org.jetbrains.kotlin.idea.util.module
import org.jetbrains.kotlin.idea.versions.MAVEN_JS_STDLIB_ID
-import org.jetbrains.kotlin.js.resolve.JsPlatform
-import org.jetbrains.kotlin.resolve.TargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.js.JsPlatforms
class KotlinJsGradleModuleConfigurator : KotlinWithGradleConfigurator() {
override val name: String = "gradle-js"
override val presentableText: String = "JavaScript with Gradle"
- override val targetPlatform: TargetPlatform = JsPlatform
+ override val targetPlatform: TargetPlatform = JsPlatforms.defaultJsPlatform
override val kotlinPluginName: String = KOTLIN_JS
override fun getKotlinPluginExpression(forKotlinDsl: Boolean): String =
if (forKotlinDsl) "id(\"kotlin2js\")" else "id 'kotlin2js'"
diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleFacetImportTest.kt b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleFacetImportTest.kt
index df0820ee413..b293c340ac4 100644
--- a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleFacetImportTest.kt
+++ b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleFacetImportTest.kt
@@ -47,12 +47,12 @@ import org.jetbrains.kotlin.idea.framework.KotlinSdkType
import org.jetbrains.kotlin.idea.project.languageVersionSettings
import org.jetbrains.kotlin.idea.util.projectStructure.allModules
import org.jetbrains.kotlin.idea.util.projectStructure.sdk
-import org.jetbrains.kotlin.js.resolve.JsPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
import org.jetbrains.kotlin.platform.impl.isCommon
import org.jetbrains.kotlin.platform.impl.isJavaScript
-import org.jetbrains.kotlin.resolve.TargetPlatform
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.js.JsPlatforms
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.junit.Assert
import org.junit.Ignore
@@ -933,9 +933,9 @@ class GradleFacetImportTest : GradleImportingTestCase() {
configureByFiles()
importProject()
- checkStableModuleName("project_main", "project", JsPlatform, isProduction = true)
+ checkStableModuleName("project_main", "project", JsPlatforms.defaultJsPlatform, isProduction = true)
// Note "_test" suffix: this is current behavior of K2JS Compiler
- checkStableModuleName("project_test", "project_test", JsPlatform, isProduction = false)
+ checkStableModuleName("project_test", "project_test", JsPlatforms.defaultJsPlatform, isProduction = false)
assertAllModulesConfigured()
}
@@ -945,8 +945,8 @@ class GradleFacetImportTest : GradleImportingTestCase() {
configureByFiles()
importProject()
- checkStableModuleName("project_main", "project", JvmPlatform, isProduction = true)
- checkStableModuleName("project_test", "project", JvmPlatform, isProduction = false)
+ checkStableModuleName("project_main", "project", JvmPlatforms.defaultJvmPlatform, isProduction = true)
+ checkStableModuleName("project_test", "project", JvmPlatforms.defaultJvmPlatform, isProduction = false)
assertAllModulesConfigured()
}
diff --git a/idea/idea-jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt b/idea/idea-jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt
index 05e89af0508..aaa4ea66c9a 100644
--- a/idea/idea-jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt
+++ b/idea/idea-jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.cli.common.arguments.copyBean
import org.jetbrains.kotlin.cli.common.arguments.parseCommandLineArguments
import org.jetbrains.kotlin.platform.IdePlatform
import org.jetbrains.kotlin.platform.IdePlatformKind
+import org.jetbrains.kotlin.platform.TargetPlatformVersion
import org.jetbrains.kotlin.utils.DescriptionAware
@Deprecated("Use IdePlatformKind instead.", level = DeprecationLevel.ERROR)
diff --git a/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/DefaultIdeTargetPlatformKindProvider.kt b/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/DefaultIdeTargetPlatformKindProvider.kt
index 4ce422fdba7..47b73516883 100644
--- a/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/DefaultIdeTargetPlatformKindProvider.kt
+++ b/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/DefaultIdeTargetPlatformKindProvider.kt
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.platform
import com.intellij.openapi.components.ServiceManager
import org.jetbrains.kotlin.config.isJps
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
-import org.jetbrains.kotlin.resolve.TargetPlatform
interface DefaultIdeTargetPlatformKindProvider {
val defaultPlatform: IdePlatform<*, *>
diff --git a/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/IdePlatform.kt b/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/IdePlatform.kt
index 7778fdbc343..c0aee27190c 100644
--- a/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/IdePlatform.kt
+++ b/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/IdePlatform.kt
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.platform
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
-import org.jetbrains.kotlin.config.TargetPlatformVersion
import org.jetbrains.kotlin.utils.DescriptionAware
abstract class IdePlatform, out Arguments : CommonCompilerArguments> : DescriptionAware {
diff --git a/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/IdePlatformKind.kt b/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/IdePlatformKind.kt
index 7c7b7adaf00..06c2f46e77e 100644
--- a/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/IdePlatformKind.kt
+++ b/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/IdePlatformKind.kt
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.platform.impl.CommonIdePlatformKind
import org.jetbrains.kotlin.platform.impl.JsIdePlatformKind
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
import org.jetbrains.kotlin.platform.impl.NativeIdePlatformKind
-import org.jetbrains.kotlin.resolve.TargetPlatform
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
abstract class IdePlatformKind> {
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 48f8018be6b..edcc1a4355a 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.CommonPlatforms
import org.jetbrains.kotlin.platform.IdePlatform
import org.jetbrains.kotlin.platform.IdePlatformKind
+import org.jetbrains.kotlin.platform.TargetPlatformVersion
object CommonIdePlatformKind : IdePlatformKind() {
@@ -20,7 +20,7 @@ object CommonIdePlatformKind : IdePlatformKind() {
else null
}
- override val compilerPlatform get() = CommonPlatform
+ override val compilerPlatform get() = CommonPlatforms.defaultCommonPlatform
override val platforms get() = listOf(Platform)
override val defaultPlatform get() = Platform
diff --git a/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/impl/JsIdePlatformKind.kt b/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/impl/JsIdePlatformKind.kt
index 26f86068749..19b30a8932c 100644
--- a/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/impl/JsIdePlatformKind.kt
+++ b/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/impl/JsIdePlatformKind.kt
@@ -8,10 +8,10 @@ package org.jetbrains.kotlin.platform.impl
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments
-import org.jetbrains.kotlin.config.TargetPlatformVersion
-import org.jetbrains.kotlin.js.resolve.JsPlatform
+import org.jetbrains.kotlin.platform.TargetPlatformVersion
import org.jetbrains.kotlin.platform.IdePlatform
import org.jetbrains.kotlin.platform.IdePlatformKind
+import org.jetbrains.kotlin.platform.js.JsPlatforms
object JsIdePlatformKind : IdePlatformKind() {
@@ -20,7 +20,7 @@ object JsIdePlatformKind : IdePlatformKind() {
else null
}
- override val compilerPlatform get() = JsPlatform
+ override val compilerPlatform get() = JsPlatforms.defaultJsPlatform
override val platforms get() = listOf(Platform)
override val defaultPlatform get() = Platform
diff --git a/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/impl/JvmIdePlatformKind.kt b/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/impl/JvmIdePlatformKind.kt
index f3dccb02eab..16ee456012d 100644
--- a/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/impl/JvmIdePlatformKind.kt
+++ b/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/impl/JvmIdePlatformKind.kt
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
import org.jetbrains.kotlin.config.JvmTarget
import org.jetbrains.kotlin.platform.IdePlatform
import org.jetbrains.kotlin.platform.IdePlatformKind
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
object JvmIdePlatformKind : IdePlatformKind() {
@@ -26,7 +26,7 @@ object JvmIdePlatformKind : IdePlatformKind() {
} else null
}
- override val compilerPlatform get() = JvmPlatform
+ override val compilerPlatform get() = JvmPlatforms.defaultJvmPlatform
override val platforms = JvmTarget.values().map { ver -> Platform(ver) }
override val defaultPlatform get() = Platform(JvmTarget.DEFAULT)
diff --git a/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/impl/NativeIdePlatformKind.kt b/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/impl/NativeIdePlatformKind.kt
index 1d766132e7a..57006df588b 100644
--- a/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/impl/NativeIdePlatformKind.kt
+++ b/idea/idea-jps-common/src/org/jetbrains/kotlin/platform/impl/NativeIdePlatformKind.kt
@@ -7,10 +7,10 @@
package org.jetbrains.kotlin.platform.impl
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
-import org.jetbrains.kotlin.config.TargetPlatformVersion
+import org.jetbrains.kotlin.platform.TargetPlatformVersion
import org.jetbrains.kotlin.platform.IdePlatform
import org.jetbrains.kotlin.platform.IdePlatformKind
-import org.jetbrains.kotlin.resolve.konan.platform.KonanPlatform
+import org.jetbrains.kotlin.platform.konan.KonanPlatforms
object NativeIdePlatformKind : IdePlatformKind() {
@@ -19,7 +19,7 @@ object NativeIdePlatformKind : IdePlatformKind() {
else null
}
- override val compilerPlatform get() = KonanPlatform
+ override val compilerPlatform get() = KonanPlatforms.defaultKonanPlatform
override val platforms get() = listOf(Platform)
override val defaultPlatform get() = Platform
diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/actions/ConfigureKotlinInProjectAction.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/actions/ConfigureKotlinInProjectAction.kt
index 5401f01f441..fb6d534746a 100644
--- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/actions/ConfigureKotlinInProjectAction.kt
+++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/actions/ConfigureKotlinInProjectAction.kt
@@ -12,8 +12,8 @@ import com.intellij.openapi.ui.Messages
import com.intellij.util.PlatformUtils
import org.jetbrains.kotlin.idea.configuration.*
import org.jetbrains.kotlin.idea.util.projectStructure.allModules
-import org.jetbrains.kotlin.js.resolve.JsPlatform
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.js.isJs
+import org.jetbrains.kotlin.platform.jvm.isJvm
abstract class ConfigureKotlinInProjectAction : AnAction() {
@@ -44,7 +44,7 @@ abstract class ConfigureKotlinInProjectAction : AnAction() {
class ConfigureKotlinJsInProjectAction: ConfigureKotlinInProjectAction() {
override fun getApplicableConfigurators(project: Project) = getAbleToRunConfigurators(project).filter {
- it.targetPlatform == JsPlatform
+ it.targetPlatform.isJs()
}
override fun update(e: AnActionEvent) {
@@ -57,6 +57,6 @@ class ConfigureKotlinJsInProjectAction: ConfigureKotlinInProjectAction() {
class ConfigureKotlinJavaInProjectAction: ConfigureKotlinInProjectAction() {
override fun getApplicableConfigurators(project: Project) = getAbleToRunConfigurators(project).filter {
- it.targetPlatform is JvmPlatform
+ it.targetPlatform.isJvm()
}
}
\ No newline at end of file
diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaModuleConfigurator.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaModuleConfigurator.kt
index e787c1debc0..d23f74344c5 100644
--- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaModuleConfigurator.kt
+++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinJavaModuleConfigurator.kt
@@ -40,8 +40,8 @@ import org.jetbrains.kotlin.idea.util.projectStructure.sdk
import org.jetbrains.kotlin.idea.util.projectStructure.version
import org.jetbrains.kotlin.idea.versions.LibraryJarDescriptor
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
-import org.jetbrains.kotlin.resolve.TargetPlatform
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
open class KotlinJavaModuleConfigurator protected constructor() : KotlinWithLibraryConfigurator() {
override fun isApplicable(module: Module): Boolean {
@@ -71,7 +71,7 @@ open class KotlinJavaModuleConfigurator protected constructor() : KotlinWithLibr
get() = NAME
override val targetPlatform: TargetPlatform
- get() = JvmPlatform
+ get() = JvmPlatforms.defaultJvmPlatform
override fun getLibraryJarDescriptors(sdk: Sdk?): List {
var result = listOf(
diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinJsModuleConfigurator.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinJsModuleConfigurator.kt
index 567e25115f9..7b2d9b4577c 100644
--- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinJsModuleConfigurator.kt
+++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinJsModuleConfigurator.kt
@@ -32,15 +32,15 @@ import org.jetbrains.kotlin.idea.framework.JsLibraryStdDetectionUtil
import org.jetbrains.kotlin.idea.util.application.runWriteAction
import org.jetbrains.kotlin.idea.versions.LibraryJarDescriptor
import org.jetbrains.kotlin.js.JavaScript
-import org.jetbrains.kotlin.js.resolve.JsPlatform
-import org.jetbrains.kotlin.resolve.TargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.js.JsPlatforms
open class KotlinJsModuleConfigurator : KotlinWithLibraryConfigurator() {
override val name: String
get() = NAME
override val targetPlatform: TargetPlatform
- get() = JsPlatform
+ get() = JsPlatforms.defaultJsPlatform
override val presentableText: String
get() = JavaScript.FULL_NAME
diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinProjectConfigurator.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinProjectConfigurator.kt
index 28d480efeb9..fa7da49247a 100644
--- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinProjectConfigurator.kt
+++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinProjectConfigurator.kt
@@ -24,7 +24,7 @@ import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.config.ApiVersion
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.idea.versions.LibraryJarDescriptor
-import org.jetbrains.kotlin.resolve.TargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
enum class ConfigureKotlinStatus {
/** Kotlin is correctly configured using this configurator. */
diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinSetupEnvironmentNotificationProvider.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinSetupEnvironmentNotificationProvider.kt
index 1778c3feb23..37699b0517b 100644
--- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinSetupEnvironmentNotificationProvider.kt
+++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinSetupEnvironmentNotificationProvider.kt
@@ -35,7 +35,7 @@ import org.jetbrains.kotlin.idea.versions.SuppressNotificationState
import org.jetbrains.kotlin.idea.versions.UnsupportedAbiVersionNotificationPanelProvider
import org.jetbrains.kotlin.idea.versions.createComponentActionLabel
import org.jetbrains.kotlin.psi.KtFile
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.isJvm
// Code is partially copied from com.intellij.codeInsight.daemon.impl.SetupSDKNotificationProvider
class KotlinSetupEnvironmentNotificationProvider(
@@ -68,7 +68,8 @@ class KotlinSetupEnvironmentNotificationProvider(
}
if (ModuleRootManager.getInstance(module).sdk == null &&
- TargetPlatformDetector.getPlatform(psiFile) == JvmPlatform) {
+ TargetPlatformDetector.getPlatform(psiFile).isJvm()
+ ) {
return createSetupSdkPanel(myProject, psiFile)
}
diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldSyntheticScopeProvider.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldSyntheticScopeProvider.kt
index 562812b8d97..14c8a426aa5 100644
--- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldSyntheticScopeProvider.kt
+++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/DebuggerFieldSyntheticScopeProvider.kt
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.idea.debugger.evaluate
-import org.jetbrains.kotlin.analyzer.common.CommonPlatform
import org.jetbrains.kotlin.codegen.state.GenerationState
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.annotations.Annotations
@@ -27,7 +26,8 @@ import org.jetbrains.kotlin.psi.KtCodeFragment
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.DescriptorFactory
import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassNotAny
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.isCommon
+import org.jetbrains.kotlin.platform.jvm.isJvm
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
import org.jetbrains.kotlin.resolve.scopes.SyntheticScope
import org.jetbrains.kotlin.resolve.scopes.getDescriptorsFiltered
@@ -78,7 +78,7 @@ class DebuggerFieldSyntheticScope(val javaSyntheticPropertiesScope: JavaSyntheti
val containingFile = element.containingFile?.takeIf { it.isValid } as? KtFile ?: return false
val platform = containingFile.platform
- if (platform !is JvmPlatform && platform !is CommonPlatform) {
+ if (!platform.isJvm() && !platform.isCommon()) {
return false
}
diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/DebugLabelPropertyDescriptorProvider.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/DebugLabelPropertyDescriptorProvider.kt
index a9c97e4be6b..fcc767a491f 100644
--- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/DebugLabelPropertyDescriptorProvider.kt
+++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/compilation/DebugLabelPropertyDescriptorProvider.kt
@@ -28,6 +28,8 @@ import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtCodeFragment
import org.jetbrains.kotlin.psi.externalDescriptors
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.resolve.scopes.MemberScope
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.Variance
@@ -176,6 +178,9 @@ private object DebugLabelModuleDescriptor
}
}
+ override val platform: TargetPlatform?
+ get() = JvmPlatforms.defaultJvmPlatform
+
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection {
return emptyList()
}
diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinModuleBuilder.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinModuleBuilder.kt
index 1d28be52e11..aba4001fe1b 100644
--- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinModuleBuilder.kt
+++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinModuleBuilder.kt
@@ -24,14 +24,14 @@ import com.intellij.openapi.projectRoots.SdkTypeId
import com.intellij.openapi.roots.ModifiableRootModel
import com.intellij.openapi.roots.ui.configuration.ModulesProvider
import org.jetbrains.kotlin.idea.roots.migrateNonJvmSourceFolders
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.jvm.isJvm
import org.jetbrains.kotlin.idea.statistics.FUSEventGroups
import org.jetbrains.kotlin.idea.statistics.KotlinFUSLogger
-import org.jetbrains.kotlin.resolve.TargetPlatform
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import javax.swing.Icon
class KotlinModuleBuilder(
- val targetPlatform: TargetPlatform, val builderName: String, val builderDescription: String, val icon: Icon
+ val targetPlatform: TargetPlatform, val builderName: String, val builderDescription: String, val icon: Icon
) : JavaModuleBuilder() {
private var wizardContext: WizardContext? = null
@@ -51,15 +51,15 @@ class KotlinModuleBuilder(
return KotlinModuleSettingStep(targetPlatform, this, settingsStep, wizardContext)
}
- override fun isSuitableSdkType(sdkType: SdkTypeId?) = when (targetPlatform) {
- is JvmPlatform -> super.isSuitableSdkType(sdkType)
+ override fun isSuitableSdkType(sdkType: SdkTypeId?) = when {
+ targetPlatform.isJvm() -> super.isSuitableSdkType(sdkType)
else -> sdkType is KotlinSdkType
}
override fun setupRootModel(rootModel: ModifiableRootModel) {
KotlinFUSLogger.log(FUSEventGroups.NPWizards, this.javaClass.simpleName + ": ${this.targetPlatform}")
super.setupRootModel(rootModel)
- if (targetPlatform !is JvmPlatform) {
+ if (!targetPlatform.isJvm()) {
migrateNonJvmSourceFolders(rootModel)
}
}
diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinModuleSettingStep.java b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinModuleSettingStep.java
index 62f1f3e47cf..45ca3d13d02 100644
--- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinModuleSettingStep.java
+++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinModuleSettingStep.java
@@ -46,9 +46,10 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.idea.formatter.KotlinStyleGuideCodeStyle;
import org.jetbrains.kotlin.idea.formatter.ProjectCodeStyleImporter;
-import org.jetbrains.kotlin.js.resolve.JsPlatform;
-import org.jetbrains.kotlin.resolve.TargetPlatform;
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform;
+import org.jetbrains.kotlin.platform.TargetPlatform;
+import org.jetbrains.kotlin.platform.TargetPlatformKt;
+import org.jetbrains.kotlin.platform.js.JsPlatformKt;
+import org.jetbrains.kotlin.platform.jvm.JvmPlatformKt;
import javax.swing.*;
import java.lang.reflect.Field;
@@ -83,7 +84,7 @@ public class KotlinModuleSettingStep extends ModuleWizardStep {
) {
isNewProject = wizardContext != null && wizardContext.isCreatingNewProject();
- if (!(targetPlatform instanceof JvmPlatform)) {
+ if (!(JvmPlatformKt.isJvm(targetPlatform))) {
KotlinSdkType.Companion.setUpIfNeeded();
}
@@ -139,15 +140,15 @@ public class KotlinModuleSettingStep extends ModuleWizardStep {
@NotNull
protected String getLibraryLabelText() {
- if (targetPlatform == JvmPlatform.INSTANCE) return "Kotlin runtime";
- if (targetPlatform == JsPlatform.INSTANCE) return "Kotlin JS library";
+ if (JvmPlatformKt.isJvm(targetPlatform)) return "Kotlin runtime";
+ if (JsPlatformKt.isJs(targetPlatform)) return "Kotlin JS library";
throw new IllegalStateException("Only JS and JVM target are supported");
}
@NotNull
protected CustomLibraryDescription getCustomLibraryDescription(@Nullable Project project) {
- if (targetPlatform == JvmPlatform.INSTANCE) return new JavaRuntimeLibraryDescription(project);
- if (targetPlatform == JsPlatform.INSTANCE) return new JSLibraryStdDescription(project);
+ if (JvmPlatformKt.isJvm(targetPlatform)) return new JavaRuntimeLibraryDescription(project);
+ if (JsPlatformKt.isJs(targetPlatform)) return new JSLibraryStdDescription(project);
throw new IllegalStateException("Only JS and JVM target are supported");
}
diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinTemplatesFactory.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinTemplatesFactory.kt
index b519a4e47db..dae924c018c 100644
--- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinTemplatesFactory.kt
+++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinTemplatesFactory.kt
@@ -24,8 +24,8 @@ import com.intellij.platform.ProjectTemplate
import com.intellij.platform.ProjectTemplatesFactory
import com.intellij.platform.templates.BuilderBasedTemplate
import org.jetbrains.kotlin.idea.KotlinIcons
-import org.jetbrains.kotlin.js.resolve.JsPlatform
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.js.JsPlatforms
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
class KotlinTemplatesFactory : ProjectTemplatesFactory() {
companion object {
@@ -39,15 +39,22 @@ class KotlinTemplatesFactory : ProjectTemplatesFactory() {
override fun createTemplates(group: String?, context: WizardContext?): Array {
val result = mutableListOf(
- BuilderBasedTemplate(KotlinModuleBuilder(JvmPlatform,
- "JVM | IDEA",
- "Kotlin project with a JVM target based on the IntelliJ IDEA build system",
- KotlinIcons.SMALL_LOGO)),
-
- BuilderBasedTemplate(KotlinModuleBuilder(JsPlatform, "JS | IDEA",
- "Kotlin project with a JavaScript target based on the IntelliJ IDEA build system",
- KotlinIcons.JS)
+ BuilderBasedTemplate(
+ KotlinModuleBuilder(
+ JvmPlatforms.defaultJvmPlatform,
+ "JVM | IDEA",
+ "Kotlin project with a JVM target based on the IntelliJ IDEA build system",
+ KotlinIcons.SMALL_LOGO
)
+ ),
+
+ BuilderBasedTemplate(
+ KotlinModuleBuilder(
+ JsPlatforms.defaultJsPlatform, "JS | IDEA",
+ "Kotlin project with a JavaScript target based on the IntelliJ IDEA build system",
+ KotlinIcons.JS
+ )
+ )
)
result.addAll(Extensions.getExtensions(EP_NAME).map { BuilderBasedTemplate(it) })
return result.toTypedArray()
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 3e2be4467b2..bb3e87c5e8b 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,7 +21,6 @@ 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.common.phaser.PhaseConfig
import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory
import org.jetbrains.kotlin.backend.jvm.jvmPhases
@@ -43,7 +42,10 @@ import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtCodeFragment
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtScript
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.config.JvmTarget
+import org.jetbrains.kotlin.platform.isCommon
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
+import org.jetbrains.kotlin.platform.jvm.isJvm
import org.jetbrains.kotlin.utils.join
import java.awt.BorderLayout
import java.awt.FlowLayout
@@ -281,10 +283,10 @@ class KotlinBytecodeToolWindow(private val myProject: Project, private val toolW
configuration: CompilerConfiguration
): GenerationState? {
val platform = ktFile.platform
- if (platform !is CommonPlatform && platform !is JvmPlatform) return null
+ if (!platform.isCommon() && !platform.isJvm()) return null
val resolutionFacade = KotlinCacheService.getInstance(ktFile.project)
- .getResolutionFacadeByFile(ktFile, JvmPlatform)
+ .getResolutionFacadeByFile(ktFile, JvmPlatforms.defaultJvmPlatform)
?: return null
val bindingContextForFile = resolutionFacade.analyzeWithAllCompilerChecks(listOf(ktFile)).bindingContext
diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/run/KotlinTestNgConfigurationProducer.java b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/run/KotlinTestNgConfigurationProducer.java
index 85c2a272f2d..48736ce85bd 100644
--- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/run/KotlinTestNgConfigurationProducer.java
+++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/run/KotlinTestNgConfigurationProducer.java
@@ -41,7 +41,7 @@ import org.jetbrains.kotlin.asJava.LightClassUtilsKt;
import org.jetbrains.kotlin.idea.project.TargetPlatformDetector;
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil;
import org.jetbrains.kotlin.psi.*;
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform;
+import org.jetbrains.kotlin.platform.jvm.JvmPlatformKt;
import java.util.List;
@@ -116,7 +116,7 @@ public class KotlinTestNgConfigurationProducer extends TestNGConfigurationProduc
KtFile ktFile = (KtFile) leaf.getContainingFile();
- if (TargetPlatformDetector.getPlatform(ktFile) != JvmPlatform.INSTANCE) {
+ if (!JvmPlatformKt.isJvm(TargetPlatformDetector.getPlatform(ktFile))) {
return false;
}
diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/versions/UnsupportedAbiVersionNotificationPanelProvider.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/versions/UnsupportedAbiVersionNotificationPanelProvider.kt
index b0ed3f7d40b..1c777898aff 100644
--- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/versions/UnsupportedAbiVersionNotificationPanelProvider.kt
+++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/versions/UnsupportedAbiVersionNotificationPanelProvider.kt
@@ -37,9 +37,9 @@ import org.jetbrains.kotlin.idea.KotlinPluginUpdater
import org.jetbrains.kotlin.idea.KotlinPluginUtil
import org.jetbrains.kotlin.idea.PluginUpdateStatus
import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
-import org.jetbrains.kotlin.js.resolve.JsPlatform
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.js.isJs
+import org.jetbrains.kotlin.platform.jvm.isJvm
import java.awt.event.ComponentAdapter
import java.awt.event.ComponentEvent
import java.text.MessageFormat
@@ -325,9 +325,10 @@ class UnsupportedAbiVersionNotificationPanelProvider(private val project: Projec
}
fun collectBadRoots(module: Module): Collection> {
- val badRoots = when (TargetPlatformDetector.getPlatform(module)) {
- JvmPlatform -> getLibraryRootsWithAbiIncompatibleKotlinClasses(module)
- JsPlatform -> getLibraryRootsWithAbiIncompatibleForKotlinJs(module)
+ val platform = TargetPlatformDetector.getPlatform(module)
+ val badRoots = when {
+ platform.isJvm() -> getLibraryRootsWithAbiIncompatibleKotlinClasses(module)
+ platform.isJs() -> getLibraryRootsWithAbiIncompatibleForKotlinJs(module)
else -> return emptyList()
}
diff --git a/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/configuration/KotlinJavaMavenConfigurator.kt b/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/configuration/KotlinJavaMavenConfigurator.kt
index f771ff4783d..202514ed09d 100644
--- a/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/configuration/KotlinJavaMavenConfigurator.kt
+++ b/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/configuration/KotlinJavaMavenConfigurator.kt
@@ -26,8 +26,8 @@ import org.jetbrains.kotlin.idea.configuration.hasKotlinJvmRuntimeInScope
import org.jetbrains.kotlin.idea.maven.PomFile
import org.jetbrains.kotlin.idea.versions.getDefaultJvmTarget
import org.jetbrains.kotlin.idea.versions.getStdlibArtifactId
-import org.jetbrains.kotlin.resolve.TargetPlatform
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
class KotlinJavaMavenConfigurator : KotlinMavenConfigurator(
KotlinJavaMavenConfigurator.TEST_LIB_ID,
@@ -68,7 +68,7 @@ class KotlinJavaMavenConfigurator : KotlinMavenConfigurator(
}
override val targetPlatform: TargetPlatform
- get() = JvmPlatform
+ get() = JvmPlatforms.defaultJvmPlatform
companion object {
private const val NAME = "maven"
diff --git a/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/configuration/KotlinJavascriptMavenConfigurator.kt b/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/configuration/KotlinJavascriptMavenConfigurator.kt
index a93c1b8c553..1ead5fa0f46 100644
--- a/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/configuration/KotlinJavascriptMavenConfigurator.kt
+++ b/idea/idea-maven/src/org/jetbrains/kotlin/idea/maven/configuration/KotlinJavascriptMavenConfigurator.kt
@@ -21,8 +21,8 @@ import org.jetbrains.idea.maven.dom.model.MavenDomPlugin
import org.jetbrains.kotlin.idea.configuration.hasKotlinJsRuntimeInScope
import org.jetbrains.kotlin.idea.maven.PomFile
import org.jetbrains.kotlin.idea.versions.MAVEN_JS_STDLIB_ID
-import org.jetbrains.kotlin.js.resolve.JsPlatform
-import org.jetbrains.kotlin.resolve.TargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.js.JsPlatforms
class KotlinJavascriptMavenConfigurator :
KotlinMavenConfigurator(null, false, KotlinJavascriptMavenConfigurator.NAME, KotlinJavascriptMavenConfigurator.PRESENTABLE_TEXT) {
@@ -43,7 +43,7 @@ class KotlinJavascriptMavenConfigurator :
}
override val targetPlatform: TargetPlatform
- get() = JsPlatform
+ get() = JsPlatforms.defaultJsPlatform
override fun getMinimumSupportedVersion() = "1.1.0"
diff --git a/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/KotlinMavenImporterTest.kt b/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/KotlinMavenImporterTest.kt
index a95a75dff98..6342aaa8c99 100644
--- a/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/KotlinMavenImporterTest.kt
+++ b/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/KotlinMavenImporterTest.kt
@@ -46,13 +46,13 @@ import org.jetbrains.kotlin.idea.framework.JSLibraryKind
import org.jetbrains.kotlin.idea.framework.KotlinSdkType
import org.jetbrains.kotlin.idea.project.languageVersionSettings
import org.jetbrains.kotlin.idea.refactoring.toPsiFile
-import org.jetbrains.kotlin.js.resolve.JsPlatform
import org.jetbrains.kotlin.platform.impl.*
import org.jetbrains.kotlin.psi.KtFile
-import org.jetbrains.kotlin.resolve.TargetPlatform
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners
import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.js.JsPlatforms
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.junit.Assert
import org.junit.runner.RunWith
import java.io.File
@@ -2970,8 +2970,8 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
assertImporterStatePresent()
- checkStableModuleName("project", "project", JvmPlatform, isProduction = true)
- checkStableModuleName("project", "project", JvmPlatform, isProduction = false)
+ checkStableModuleName("project", "project", JvmPlatforms.defaultJvmPlatform, isProduction = true)
+ checkStableModuleName("project", "project", JvmPlatforms.defaultJvmPlatform, isProduction = false)
}
fun testStableModuleNameWhileUsngMaven_JS() {
@@ -3031,8 +3031,8 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
// Note that we check name induced by '-output-file' -- may be it's not the best
// decision, but we don't have a better one
- checkStableModuleName("project", "test", JsPlatform, isProduction = true)
- checkStableModuleName("project", "test", JsPlatform, isProduction = false)
+ checkStableModuleName("project", "test", JsPlatforms.defaultJsPlatform, isProduction = true)
+ checkStableModuleName("project", "test", JsPlatforms.defaultJsPlatform, isProduction = false)
}
private fun checkStableModuleName(projectName: String, expectedName: String, platform: TargetPlatform, isProduction: Boolean) {
diff --git a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativeIdePlatformKindTooling.kt b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativeIdePlatformKindTooling.kt
index 3253948487e..937d0bcecb1 100644
--- a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativeIdePlatformKindTooling.kt
+++ b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativeIdePlatformKindTooling.kt
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.idea.platform.IdePlatformKindTooling
import org.jetbrains.kotlin.platform.impl.NativeIdePlatformKind
import org.jetbrains.kotlin.psi.KtFunction
import org.jetbrains.kotlin.psi.KtNamedDeclaration
-import org.jetbrains.kotlin.resolve.TargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
import javax.swing.Icon
class NativeIdePlatformKindTooling : IdePlatformKindTooling() {
diff --git a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativePlatformKindResolution.kt b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativePlatformKindResolution.kt
index 8cca62e0a09..c9165e51256 100644
--- a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativePlatformKindResolution.kt
+++ b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/NativePlatformKindResolution.kt
@@ -29,11 +29,10 @@ import org.jetbrains.kotlin.idea.compiler.IDELanguageSettingsProvider
import org.jetbrains.kotlin.konan.file.File
import org.jetbrains.kotlin.konan.library.*
import org.jetbrains.kotlin.konan.util.KonanFactories
+import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.platform.impl.NativeIdePlatformKind
-import org.jetbrains.kotlin.resolve.CompilerDeserializationConfiguration
-import org.jetbrains.kotlin.resolve.ImplicitIntegerCoercion
-import org.jetbrains.kotlin.resolve.TargetPlatform
-import org.jetbrains.kotlin.resolve.konan.platform.KonanPlatform
+import org.jetbrains.kotlin.platform.konan.KonanPlatforms
+import org.jetbrains.kotlin.resolve.*
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
class NativePlatformKindResolution : IdePlatformKindResolution {
@@ -122,7 +121,7 @@ private fun createKotlinNativeBuiltIns(settings: PlatformAnalysisSettings, proje
}
// TODO: It depends on a random module's stdlib, propagate the actual module here.
-private fun findNativeStdlib(project: Project): NativeLibraryInfo? = getModuleInfosFromIdeaModel(project, KonanPlatform)
+private fun findNativeStdlib(project: Project): NativeLibraryInfo? = getModuleInfosFromIdeaModel(project, KonanPlatforms.defaultKonanPlatform)
.firstNotNullResult { it.asNativeStdlib() }
private fun IdeaModuleInfo.asNativeStdlib(): NativeLibraryInfo? = if ((this as? NativeLibraryInfo)?.isStdlib == true) this else null
@@ -149,7 +148,7 @@ class NativeLibraryInfo(project: Project, library: Library, root: File) : Librar
)
override val platform: TargetPlatform
- get() = KonanPlatform
+ get() = KonanPlatforms.defaultKonanPlatform
override fun toString() = "Native" + super.toString()
diff --git a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/analyzer/NativeResolverForModuleFactory.kt b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/analyzer/NativeResolverForModuleFactory.kt
index 6c3312bc2e7..3405793007c 100644
--- a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/analyzer/NativeResolverForModuleFactory.kt
+++ b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/analyzer/NativeResolverForModuleFactory.kt
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.ide.konan.analyzer
import org.jetbrains.kotlin.analyzer.*
import org.jetbrains.kotlin.config.LanguageVersionSettings
-import org.jetbrains.kotlin.config.TargetPlatformVersion
import org.jetbrains.kotlin.container.get
import org.jetbrains.kotlin.context.ModuleContext
import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider
@@ -15,10 +14,9 @@ import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.frontend.di.createContainerForLazyResolve
import org.jetbrains.kotlin.ide.konan.NativeLibraryInfo
import org.jetbrains.kotlin.ide.konan.createPackageFragmentProvider
+import org.jetbrains.kotlin.platform.konan.KonanPlatforms
import org.jetbrains.kotlin.resolve.CodeAnalyzerInitializer
import org.jetbrains.kotlin.resolve.TargetEnvironment
-import org.jetbrains.kotlin.resolve.TargetPlatform
-import org.jetbrains.kotlin.resolve.konan.platform.KonanPlatform
import org.jetbrains.kotlin.resolve.konan.platform.NativePlatformCompilerServices
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactoryService.Companion.createDeclarationProviderFactory
@@ -31,8 +29,7 @@ object NativeResolverForModuleFactory : ResolverForModuleFactory() {
platformParameters: PlatformAnalysisParameters,
targetEnvironment: TargetEnvironment,
resolverForProject: ResolverForProject,
- languageVersionSettings: LanguageVersionSettings,
- targetPlatformVersion: TargetPlatformVersion
+ languageVersionSettings: LanguageVersionSettings
): ResolverForModule {
val declarationProviderFactory = createDeclarationProviderFactory(
@@ -47,8 +44,7 @@ object NativeResolverForModuleFactory : ResolverForModuleFactory() {
moduleContext,
declarationProviderFactory,
CodeAnalyzerInitializer.getInstance(moduleContext.project).createTrace(),
- KonanPlatform,
- TargetPlatformVersion.NoVersion,
+ KonanPlatforms.defaultKonanPlatform,
NativePlatformCompilerServices,
targetEnvironment,
languageVersionSettings
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 b3a4a3f8746..1027df0fd70 100644
--- a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsAndHashcodeAction.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsAndHashcodeAction.kt
@@ -23,7 +23,6 @@ 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
@@ -39,12 +38,13 @@ import org.jetbrains.kotlin.idea.project.languageVersionSettings
import org.jetbrains.kotlin.idea.project.platform
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
import org.jetbrains.kotlin.idea.util.application.runWriteAction
-import org.jetbrains.kotlin.js.resolve.JsPlatform
+import org.jetbrains.kotlin.platform.isCommon
+import org.jetbrains.kotlin.platform.js.isJs
import org.jetbrains.kotlin.psi.*
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.*
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassOrAny
import org.jetbrains.kotlin.resolve.source.getPsi
@@ -131,9 +131,9 @@ class KotlinGenerateEqualsAndHashcodeAction : KotlinGenerateMemberActionBase "other == null || this::class.js != $paramName::class.js"
- is CommonPlatform -> "other == null || this::class != $paramName::class"
+ return when {
+ targetClass.platform.isJs() -> "other == null || this::class.js != $paramName::class.js"
+ targetClass.platform.isCommon() -> "other == null || this::class != $paramName::class"
else -> defaultExpression
}
}
@@ -141,9 +141,9 @@ class KotlinGenerateEqualsAndHashcodeAction : KotlinGenerateMemberActionBase "this::class.js"
- is CommonPlatform -> "this::class"
+ return when {
+ targetClass.platform.isJs() -> "this::class.js"
+ targetClass.platform.isCommon() -> "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 3b08af676cf..f95aef38fec 100644
--- a/idea/src/org/jetbrains/kotlin/idea/highlighter/PlatformExpectedAnnotator.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/PlatformExpectedAnnotator.kt
@@ -19,7 +19,6 @@ 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
@@ -35,6 +34,7 @@ import org.jetbrains.kotlin.psi.psiUtil.hasExpectModifier
import org.jetbrains.kotlin.resolve.BindingTraceContext
import org.jetbrains.kotlin.resolve.checkers.ExpectedActualDeclarationChecker
import org.jetbrains.kotlin.resolve.diagnostics.SimpleDiagnostics
+import org.jetbrains.kotlin.platform.isCommon
import org.jetbrains.kotlin.resolve.jvm.multiplatform.JavaActualAnnotationArgumentExtractor
class PlatformExpectedAnnotator : Annotator {
@@ -42,7 +42,7 @@ class PlatformExpectedAnnotator : Annotator {
val declaration = element as? KtNamedDeclaration ?: return
if (!isExpectedDeclaration(declaration)) return
- if (TargetPlatformDetector.getPlatform(declaration.containingKtFile) !is CommonPlatform) return
+ if (!TargetPlatformDetector.getPlatform(declaration.containingKtFile).isCommon()) return
val implementingModules = declaration.findModuleDescriptor().implementingDescriptors
if (implementingModules.isEmpty()) return
diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/HasActualMarker.kt b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/HasActualMarker.kt
index 739aab682ce..126541c6578 100644
--- a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/HasActualMarker.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/HasActualMarker.kt
@@ -25,22 +25,21 @@ import org.jetbrains.kotlin.idea.core.isAndroidModule
import org.jetbrains.kotlin.idea.core.toDescriptor
import org.jetbrains.kotlin.idea.util.actualsForExpected
import org.jetbrains.kotlin.psi.KtDeclaration
-import org.jetbrains.kotlin.resolve.MultiTargetPlatform
import org.jetbrains.kotlin.resolve.descriptorUtil.module
-import org.jetbrains.kotlin.resolve.getMultiTargetPlatform
+import org.jetbrains.kotlin.platform.isCommon
-private fun ModuleDescriptor?.getMultiTargetPlatformName(): String? {
+private fun ModuleDescriptor?.getPlatformName(): String? {
if (this == null) return null
val moduleInfo = getCapability(ModuleInfo.Capability) as? ModuleSourceInfo
if (moduleInfo != null && moduleInfo.module.isAndroidModule()) {
return "Android"
}
- val platform = getMultiTargetPlatform() ?: return null
- return when (platform) {
- is MultiTargetPlatform.Specific ->
- platform.platform
- MultiTargetPlatform.Common ->
- "common"
+ val platform = platform ?: return null
+
+ // TODO(dsavvinov): use better description
+ return when {
+ platform.isCommon() -> "common"
+ else -> platform.single().platformName
}
}
@@ -50,7 +49,7 @@ fun getPlatformActualTooltip(declaration: KtDeclaration): String? {
return actualDeclarations.asSequence()
.mapNotNull { it.toDescriptor()?.module }
- .groupBy { it.getMultiTargetPlatformName() }
+ .groupBy { it.getPlatformName() }
.filter { (platform, _) -> platform != null }
.entries
.joinToString(prefix = "Has actuals in ") { (platform, modules) ->
diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/OptionalExpectationInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/OptionalExpectationInspection.kt
index 76f8235e22b..c1809b4c622 100644
--- a/idea/src/org/jetbrains/kotlin/idea/inspections/OptionalExpectationInspection.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/inspections/OptionalExpectationInspection.kt
@@ -15,16 +15,16 @@ import org.jetbrains.kotlin.idea.caches.project.implementingDescriptors
import org.jetbrains.kotlin.idea.caches.resolve.findModuleDescriptor
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
import org.jetbrains.kotlin.idea.quickfix.expectactual.CreateActualClassFix
+import org.jetbrains.kotlin.platform.isCommon
import org.jetbrains.kotlin.psi.KtClass
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.classOrObjectVisitor
import org.jetbrains.kotlin.psi.psiUtil.hasExpectModifier
-import org.jetbrains.kotlin.resolve.MultiTargetPlatform
import org.jetbrains.kotlin.resolve.checkers.ExpectedActualDeclarationChecker
import org.jetbrains.kotlin.resolve.checkers.ExpectedActualDeclarationChecker.Companion.allStrongIncompatibilities
import org.jetbrains.kotlin.resolve.descriptorUtil.module
-import org.jetbrains.kotlin.resolve.getMultiTargetPlatform
import org.jetbrains.kotlin.resolve.multiplatform.ExpectedActualResolver
+import org.jetbrains.kotlin.platform.oldFashionedDescription
class OptionalExpectationInspection : AbstractKotlinInspection() {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean, session: LocalInspectionToolSession) =
@@ -49,12 +49,14 @@ class OptionalExpectationInspection : AbstractKotlinInspection() {
expectedOnes != null && ExpectedActualResolver.Compatibility.Compatible in expectedOnes.keys
})
) continue
- val platform = (actualModuleDescriptor.getMultiTargetPlatform() as? MultiTargetPlatform.Specific) ?: continue
+ val platform = actualModuleDescriptor.platform ?: continue
+ if (platform.isCommon()) continue
+
val displayedName = actualModuleDescriptor.getCapability(ModuleInfo.Capability)?.displayedName ?: ""
val actualModule = (actualModuleDescriptor.getCapability(ModuleInfo.Capability) as? ModuleSourceInfo)?.module ?: continue
holder.registerProblem(
classOrObject.nameIdentifier ?: classOrObject,
- "Optionally expected annotation has no actual annotation in module $displayedName for platform ${platform.platform}",
+ "Optionally expected annotation has no actual annotation in module $displayedName for platform ${platform.oldFashionedDescription}",
// NB: some highlighting is not suggested for this inspection
ProblemHighlightType.INFORMATION,
IntentionWrapper(CreateActualClassFix(classOrObject, actualModule, platform), classOrObject.containingFile)
diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceWithEnumMapInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceWithEnumMapInspection.kt
index a2ccce1a0c5..972a279ef73 100644
--- a/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceWithEnumMapInspection.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceWithEnumMapInspection.kt
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.psi.createExpressionByPattern
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.isJvm
import org.jetbrains.kotlin.types.typeUtil.isEnum
private val hashMapCreationFqNames = setOf(
@@ -34,7 +34,7 @@ private val hashMapCreationFqNames = setOf(
class ReplaceWithEnumMapInspection : AbstractKotlinInspection() {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean): PsiElementVisitor {
return callExpressionVisitor(fun(element: KtCallExpression) {
- if (element.platform !is JvmPlatform) return
+ if (!element.platform.isJvm()) return
val context = element.analyze()
val fqName = element.getResolvedCall(context)?.resultingDescriptor?.fqNameUnsafe?.asString() ?: return
if (!hashMapCreationFqNames.contains(fqName)) return
diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/SuspiciousAsDynamicInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/SuspiciousAsDynamicInspection.kt
index bb082150681..da30997291b 100644
--- a/idea/src/org/jetbrains/kotlin/idea/inspections/SuspiciousAsDynamicInspection.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/inspections/SuspiciousAsDynamicInspection.kt
@@ -12,16 +12,16 @@ import com.intellij.codeInspection.ProblemsHolder
import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.idea.intentions.getCallableDescriptor
import org.jetbrains.kotlin.idea.project.platform
-import org.jetbrains.kotlin.js.resolve.JsPlatform
import org.jetbrains.kotlin.psi.KtCallExpression
import org.jetbrains.kotlin.psi.callExpressionVisitor
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedExpressionForSelector
+import org.jetbrains.kotlin.platform.js.isJs
import org.jetbrains.kotlin.types.DynamicType
class SuspiciousAsDynamicInspection : AbstractKotlinInspection() {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean) =
callExpressionVisitor(fun(call) {
- if (call.platform != JsPlatform) return
+ if (!call.platform.isJs()) return
if (call.calleeExpression?.text != "asDynamic") return
if (call.getQualifiedExpressionForSelector()?.receiverExpression?.getCallableDescriptor()?.returnType !is DynamicType) return
holder.registerProblem(
diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/conventionNameCalls/ReplaceCallWithBinaryOperatorInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/conventionNameCalls/ReplaceCallWithBinaryOperatorInspection.kt
index 91a4a7e6c96..cb379acc7b8 100644
--- a/idea/src/org/jetbrains/kotlin/idea/inspections/conventionNameCalls/ReplaceCallWithBinaryOperatorInspection.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/inspections/conventionNameCalls/ReplaceCallWithBinaryOperatorInspection.kt
@@ -35,7 +35,6 @@ import org.jetbrains.kotlin.idea.intentions.isReceiverExpressionWithValue
import org.jetbrains.kotlin.idea.intentions.toResolvedCall
import org.jetbrains.kotlin.idea.project.languageVersionSettings
import org.jetbrains.kotlin.idea.project.platform
-import org.jetbrains.kotlin.js.resolve.JsPlatform
import org.jetbrains.kotlin.lexer.KtSingleValueToken
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.*
@@ -48,6 +47,7 @@ import org.jetbrains.kotlin.resolve.calls.model.ArgumentMatch
import org.jetbrains.kotlin.resolve.calls.model.isReallySuccess
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactory
import org.jetbrains.kotlin.resolve.calls.smartcasts.getKotlinTypeWithPossibleSmartCastToFP
+import org.jetbrains.kotlin.platform.js.isJs
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.expressions.OperatorConventions
@@ -87,7 +87,7 @@ class ReplaceCallWithBinaryOperatorInspection : AbstractApplicabilityBasedInspec
override fun inspectionHighlightType(element: KtDotQualifiedExpression): ProblemHighlightType {
val calleeExpression = element.callExpression?.calleeExpression as? KtSimpleNameExpression
val identifier = calleeExpression?.getReferencedNameAsName()
- if (element.platform == JsPlatform && identifier == OperatorNameConventions.EQUALS) {
+ if (element.platform.isJs() && identifier == OperatorNameConventions.EQUALS) {
val context = element.analyze(BodyResolveMode.PARTIAL)
if (element.receiverExpression.getType(context)?.isDynamic() == true) {
return ProblemHighlightType.INFORMATION
diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/AddJvmOverloadsIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/AddJvmOverloadsIntention.kt
index 1a25f2fd384..40292a9bf3f 100644
--- a/idea/src/org/jetbrains/kotlin/idea/intentions/AddJvmOverloadsIntention.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/intentions/AddJvmOverloadsIntention.kt
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.endOffset
import org.jetbrains.kotlin.psi.psiUtil.startOffset
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.isJvm
private val annotationFqName = FqName("kotlin.jvm.JvmOverloads")
@@ -69,7 +69,7 @@ class AddJvmOverloadsIntention : SelfTargetingIntention(
text = "Add '@JvmOverloads' annotation to $targetName"
- return TargetPlatformDetector.getPlatform(element.containingKtFile) == JvmPlatform
+ return TargetPlatformDetector.getPlatform(element.containingKtFile).isJvm()
&& parameters.any { it.hasDefaultValue() }
&& element.findAnnotation(annotationFqName) == null
}
diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/AddThrowsAnnotationIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/AddThrowsAnnotationIntention.kt
index 46bc82bda71..6976c794df6 100644
--- a/idea/src/org/jetbrains/kotlin/idea/intentions/AddThrowsAnnotationIntention.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/intentions/AddThrowsAnnotationIntention.kt
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.psi.psiUtil.getParentOfTypesAndPredicate
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.calls.callUtil.getType
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.isJvm
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.getAbbreviatedType
@@ -30,7 +30,7 @@ class AddThrowsAnnotationIntention : SelfTargetingIntention(
) {
override fun isApplicableTo(element: KtThrowExpression, caretOffset: Int): Boolean {
- if (element.platform != JvmPlatform) return false
+ if (!element.platform.isJvm()) return false
val containingDeclaration = element.getContainingDeclaration() ?: return false
val type = element.thrownExpression?.resolveToCall()?.resultingDescriptor?.returnType ?: return false
diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertTestFunctionToSpacedIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertTestFunctionToSpacedIntention.kt
index 2ca87f1ef6a..368b8b198bb 100644
--- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertTestFunctionToSpacedIntention.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertTestFunctionToSpacedIntention.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.platform.isCommon
+import org.jetbrains.kotlin.platform.js.isJs
import org.jetbrains.kotlin.util.capitalizeDecapitalize.decapitalizeSmart
import org.jetbrains.kotlin.utils.SmartList
@@ -54,7 +54,7 @@ sealed class ConvertTestFunctionToSpacedIntention(case: String) : SelfTargetingR
override fun applicabilityRange(element: KtNamedFunction): TextRange? {
val platform = element.platform
- if (platform is CommonPlatform || platform is JsPlatform) return null
+ if (platform.isCommon() || platform.isJs()) return null
val range = element.nameIdentifier?.textRange ?: return null
val name = element.name ?: return null
diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertUnsafeCastCallToUnsafeCastIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertUnsafeCastCallToUnsafeCastIntention.kt
index f3f3e54e1c3..9c387abc1ed 100644
--- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertUnsafeCastCallToUnsafeCastIntention.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertUnsafeCastCallToUnsafeCastIntention.kt
@@ -8,19 +8,19 @@ package org.jetbrains.kotlin.idea.intentions
import com.intellij.openapi.editor.Editor
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
import org.jetbrains.kotlin.idea.project.platform
-import org.jetbrains.kotlin.js.resolve.JsPlatform
import org.jetbrains.kotlin.psi.KtCallExpression
import org.jetbrains.kotlin.psi.KtDotQualifiedExpression
import org.jetbrains.kotlin.psi.KtPsiFactory
import org.jetbrains.kotlin.psi.createExpressionByPattern
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameOrNull
+import org.jetbrains.kotlin.platform.js.isJs
class ConvertUnsafeCastCallToUnsafeCastIntention : SelfTargetingIntention(
KtDotQualifiedExpression::class.java, "Convert to unsafe cast"
) {
override fun isApplicableTo(element: KtDotQualifiedExpression, caretOffset: Int): Boolean {
- if (element.platform != JsPlatform) return false
+ if (!element.platform.isJs()) return false
if ((element.selectorExpression as? KtCallExpression)?.calleeExpression?.text != "unsafeCast") return false
val fqName = element.resolveToCall()?.resultingDescriptor?.fqNameOrNull()?.asString() ?: return false
diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertUnsafeCastToUnsafeCastCallIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertUnsafeCastToUnsafeCastCallIntention.kt
index 0fd3224fbb5..d6e3d687ac7 100644
--- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertUnsafeCastToUnsafeCastCallIntention.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertUnsafeCastToUnsafeCastCallIntention.kt
@@ -8,12 +8,12 @@ package org.jetbrains.kotlin.idea.intentions
import com.intellij.openapi.editor.Editor
import org.jetbrains.kotlin.idea.caches.resolve.analyze
import org.jetbrains.kotlin.idea.project.platform
-import org.jetbrains.kotlin.js.resolve.JsPlatform
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.KtBinaryExpressionWithTypeRHS
import org.jetbrains.kotlin.psi.KtPsiFactory
import org.jetbrains.kotlin.psi.createExpressionByPattern
import org.jetbrains.kotlin.resolve.BindingContext
+import org.jetbrains.kotlin.platform.js.isJs
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.types.TypeUtils
@@ -22,7 +22,7 @@ class ConvertUnsafeCastToUnsafeCastCallIntention : SelfTargetingIntention getJvmClassesByName(name)
+private fun KotlinIndicesHelper.getClassesByName(expressionForPlatform: KtExpression, name: String): Collection {
+ val platform = TargetPlatformDetector.getPlatform(expressionForPlatform.containingKtFile)
+ return when {
+ platform.isJvm() -> getJvmClassesByName(name)
else -> getKotlinClasses({ it == name },
// Enum entries should be contributes with members import fix
psiFilter = { ktDeclaration -> ktDeclaration !is KtEnumEntry },
kindFilter = { kind -> kind != ClassKind.ENUM_ENTRY })
}
+}
private fun CallTypeAndReceiver<*, *>.toFilter() = { descriptor: DeclarationDescriptor ->
callType.descriptorKindFilter.accepts(descriptor)
diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt
index c644d93eb10..f6c8373ca2a 100644
--- a/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt
@@ -73,9 +73,9 @@ import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.createSmartPointer
import org.jetbrains.kotlin.psi.psiUtil.visibilityModifierType
import org.jetbrains.kotlin.resolve.AnnotationChecker
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.resolve.annotations.JVM_STATIC_ANNOTATION_FQ_NAME
import org.jetbrains.kotlin.resolve.descriptorUtil.module
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.storage.LockBasedStorageManager
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.Variance
@@ -365,7 +365,7 @@ class KotlinElementActionsFactory : JvmElementActionsFactory() {
if (!modifierBuilder.isValid) return emptyList()
val resolutionFacade = KotlinCacheService.getInstance(targetContainer.project)
- .getResolutionFacadeByFile(targetContainer.containingFile, JvmPlatform) ?: return emptyList()
+ .getResolutionFacadeByFile(targetContainer.containingFile, JvmPlatforms.defaultJvmPlatform) ?: return emptyList()
val returnTypeInfo = request.returnType.toKotlinTypeInfo(resolutionFacade)
val parameters = request.parameters as List>>
val parameterInfos = parameters.map { (suggestedNames, expectedTypes) ->
diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt.182 b/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt.182
index f1ab4f338b8..3049e2dc68a 100644
--- a/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt.182
+++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt.182
@@ -73,9 +73,9 @@ import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.createSmartPointer
import org.jetbrains.kotlin.psi.psiUtil.visibilityModifierType
import org.jetbrains.kotlin.resolve.AnnotationChecker
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.resolve.annotations.JVM_STATIC_ANNOTATION_FQ_NAME
import org.jetbrains.kotlin.resolve.descriptorUtil.module
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.storage.LockBasedStorageManager
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.Variance
@@ -409,7 +409,7 @@ class KotlinElementActionsFactory : JvmElementActionsFactory() {
if (!modifierBuilder.isValid) return emptyList()
val resolutionFacade = KotlinCacheService.getInstance(targetContainer.project)
- .getResolutionFacadeByFile(targetContainer.containingFile, JvmPlatform) ?: return emptyList()
+ .getResolutionFacadeByFile(targetContainer.containingFile, JvmPlatforms.defaultJvmPlatform) ?: return emptyList()
val returnTypeInfo = request.returnType.toKotlinTypeInfo(resolutionFacade)
val parameters = request.parameters as List>>
val parameterInfos = parameters.map { (suggestedNames, expectedTypes) ->
diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateActualFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateActualFix.kt
index bf522fde405..e1af24a98e4 100644
--- a/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateActualFix.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateActualFix.kt
@@ -32,17 +32,17 @@ import org.jetbrains.kotlin.idea.quickfix.KotlinSingleIntentionActionFactory
import org.jetbrains.kotlin.idea.util.actualsForExpected
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.hasExpectModifier
-import org.jetbrains.kotlin.resolve.MultiTargetPlatform
-import org.jetbrains.kotlin.resolve.getMultiTargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
sealed class CreateActualFix(
declaration: D,
actualModule: Module,
- private val actualPlatform: MultiTargetPlatform.Specific,
+ private val actualPlatform: TargetPlatform,
generateIt: KtPsiFactory.(Project, D) -> D?
) : AbstractCreateDeclarationFix(declaration, actualModule, generateIt) {
- override fun getText() = "Create actual $elementType for module ${module.name} (${actualPlatform.platform})"
+ override fun getText() =
+ "Create actual $elementType for module ${module.name} (${actualPlatform.singleOrNull()?.platformName ?: actualPlatform})"
final override fun invoke(project: Project, editor: Editor?, file: KtFile) {
val actualFile = getOrCreateImplementationFile() ?: return
@@ -71,7 +71,7 @@ sealed class CreateActualFix(
if (compatibility.isNotEmpty() && declaration !is KtFunction) return null
val actualModuleDescriptor = d.b
val actualModule = (actualModuleDescriptor.getCapability(ModuleInfo.Capability) as? ModuleSourceInfo)?.module ?: return null
- val actualPlatform = actualModuleDescriptor.getMultiTargetPlatform() as? MultiTargetPlatform.Specific ?: return null
+ val actualPlatform = actualModuleDescriptor.platform ?: return null
return when (declaration) {
is KtClassOrObject -> CreateActualClassFix(declaration, actualModule, actualPlatform)
is KtFunction -> CreateActualFunctionFix(declaration, actualModule, actualPlatform)
@@ -85,7 +85,7 @@ sealed class CreateActualFix(
class CreateActualClassFix(
klass: KtClassOrObject,
actualModule: Module,
- actualPlatform: MultiTargetPlatform.Specific
+ actualPlatform: TargetPlatform
) : CreateActualFix(klass, actualModule, actualPlatform, { project, element ->
generateClassOrObject(project, false, element)
})
@@ -93,7 +93,7 @@ class CreateActualClassFix(
class CreateActualPropertyFix(
property: KtProperty,
actualModule: Module,
- actualPlatform: MultiTargetPlatform.Specific
+ actualPlatform: TargetPlatform
) : CreateActualFix(property, actualModule, actualPlatform, { project, element ->
val descriptor = element.toDescriptor() as? PropertyDescriptor
descriptor?.let { generateProperty(project, false, element, descriptor) }
@@ -102,7 +102,7 @@ class CreateActualPropertyFix(
class CreateActualFunctionFix(
function: KtFunction,
actualModule: Module,
- actualPlatform: MultiTargetPlatform.Specific
+ actualPlatform: TargetPlatform
) : CreateActualFix(function, actualModule, actualPlatform, { project, element ->
val descriptor = element.toDescriptor() as? FunctionDescriptor
descriptor?.let { generateFunction(project, false, element, descriptor) }
diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/ExpectActualUtils.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/ExpectActualUtils.kt
index ee7ad8ff225..192cb2875e4 100644
--- a/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/ExpectActualUtils.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/ExpectActualUtils.kt
@@ -36,12 +36,11 @@ import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.hasActualModifier
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
-import org.jetbrains.kotlin.resolve.MultiTargetPlatform
import org.jetbrains.kotlin.resolve.checkers.ExpectedActualDeclarationChecker
import org.jetbrains.kotlin.resolve.checkers.ExperimentalUsageChecker
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
import org.jetbrains.kotlin.resolve.descriptorUtil.module
-import org.jetbrains.kotlin.resolve.getMultiTargetPlatform
+import org.jetbrains.kotlin.platform.isCommon
import org.jetbrains.kotlin.types.AbbreviatedType
import org.jetbrains.kotlin.types.KotlinType
@@ -296,7 +295,7 @@ private fun KotlinType.checkAccessibility(accessibleClasses: List) -> Boolean> = mapOf(
- JvmPlatform to { roots: Array -> JavaRuntimeDetectionUtil.getRuntimeJar(roots.toList()) != null },
- JsPlatform to { roots: Array -> JsLibraryStdDetectionUtil.getJsStdLibJar(roots.toList()) != null },
- CommonPlatform to { roots: Array -> getLibraryJar(roots, PathUtil.KOTLIN_STDLIB_COMMON_JAR_PATTERN) != null }
+ JvmPlatforms.defaultJvmPlatform to { roots: Array -> JavaRuntimeDetectionUtil.getRuntimeJar(roots.toList()) != null },
+ JsPlatforms.defaultJsPlatform to { roots: Array -> JsLibraryStdDetectionUtil.getJsStdLibJar(roots.toList()) != null },
+ CommonPlatforms.defaultCommonPlatform to { roots: Array -> getLibraryJar(roots, PathUtil.KOTLIN_STDLIB_COMMON_JAR_PATTERN) != null }
)
}
@@ -148,7 +152,7 @@ class KotlinNonJvmSourceRootConverterProvider : ConverterProvider("kotlin-non-jv
.forEach {
val stdlibPlatform = it.stdlibPlatform
if (stdlibPlatform != null) {
- if (stdlibPlatform == CommonPlatform) {
+ if (stdlibPlatform.isCommon()) {
hasCommonStdlib = true
} else {
return stdlibPlatform
@@ -156,13 +160,13 @@ class KotlinNonJvmSourceRootConverterProvider : ConverterProvider("kotlin-non-jv
}
}
- return if (hasCommonStdlib) CommonPlatform else null
+ return if (hasCommonStdlib) CommonPlatforms.defaultCommonPlatform else null
}
private fun ModuleSettings.detectPlatform(): TargetPlatform {
return detectPlatformByFacet()
?: detectPlatformByDependencies()
- ?: JvmPlatform
+ ?: JvmPlatforms.defaultJvmPlatform
}
private fun ModuleSettings.getSourceFolderElements(): List {
@@ -192,7 +196,7 @@ class KotlinNonJvmSourceRootConverterProvider : ConverterProvider("kotlin-non-jv
}
val targetPlatform = settings.detectPlatform()
- return (targetPlatform != JvmPlatform)
+ return (!targetPlatform.isJvm())
}
override fun process(settings: ModuleSettings) {
diff --git a/idea/src/org/jetbrains/kotlin/idea/roots/ui/NonJvmKotlinModuleEditorsProvider.kt b/idea/src/org/jetbrains/kotlin/idea/roots/ui/NonJvmKotlinModuleEditorsProvider.kt
index 3a5a96d95bc..1a12c413da6 100644
--- a/idea/src/org/jetbrains/kotlin/idea/roots/ui/NonJvmKotlinModuleEditorsProvider.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/roots/ui/NonJvmKotlinModuleEditorsProvider.kt
@@ -13,7 +13,7 @@ import com.intellij.openapi.roots.ui.configuration.ModuleConfigurationEditorProv
import com.intellij.openapi.roots.ui.configuration.ModuleConfigurationState
import com.intellij.openapi.roots.ui.configuration.OutputEditor
import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.isJvm
class NonJvmKotlinModuleEditorsProvider : ModuleConfigurationEditorProviderEx {
override fun isCompleteEditorSet() = true
@@ -23,7 +23,7 @@ class NonJvmKotlinModuleEditorsProvider : ModuleConfigurationEditorProviderEx {
val module = rootModel.module
if (ModuleType.get(module) !is JavaModuleType) return ModuleConfigurationEditor.EMPTY
val targetPlatform = TargetPlatformDetector.getPlatform(module)
- if (targetPlatform is JvmPlatform) return ModuleConfigurationEditor.EMPTY
+ if (targetPlatform.isJvm()) return ModuleConfigurationEditor.EMPTY
val moduleName = module.name
return arrayOf(
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 8aa2f449b0a..3630001333a 100644
--- a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/generate/AbstractCodeInsightActionTest.kt
+++ b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/generate/AbstractCodeInsightActionTest.kt
@@ -14,14 +14,14 @@ 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
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
-import org.jetbrains.kotlin.js.resolve.JsPlatform
import org.jetbrains.kotlin.psi.KtFile
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.CommonPlatforms
+import org.jetbrains.kotlin.platform.js.JsPlatforms
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.test.InTextDirectivesUtils
import org.jetbrains.kotlin.test.KotlinTestUtils
import java.io.File
@@ -78,9 +78,9 @@ abstract class AbstractCodeInsightActionTest : KotlinLightCodeInsightFixtureTest
val targetPlatformName = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// PLATFORM: ")
if (targetPlatformName != null) {
val targetPlatform = when (targetPlatformName) {
- "JVM" -> JvmPlatform
- "JavaScript" -> JsPlatform
- "Common" -> CommonPlatform
+ "JVM" -> JvmPlatforms.defaultJvmPlatform
+ "JavaScript" -> JsPlatforms.defaultJsPlatform
+ "Common" -> CommonPlatforms.defaultCommonPlatform
else -> error("Unexpected platform name: $targetPlatformName")
}
mainPsiFile.forcedTargetPlatform = targetPlatform
diff --git a/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/CodeFragmentCompletionInLibraryTest.kt b/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/CodeFragmentCompletionInLibraryTest.kt
index adc4d1ff6c2..24a8670e0ad 100644
--- a/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/CodeFragmentCompletionInLibraryTest.kt
+++ b/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/CodeFragmentCompletionInLibraryTest.kt
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.idea.test.SdkAndMockLibraryProjectDescriptor
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtFunction
import org.jetbrains.kotlin.psi.KtPsiFactory
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.junit.runner.RunWith
@@ -60,7 +60,8 @@ class CodeFragmentCompletionInLibraryTest : AbstractJvmBasicCompletionTest() {
private fun testCompletionInLibraryCodeFragment(fragmentText: String, vararg completionDirectives: String) {
setupFixtureByCodeFragment(fragmentText)
val directives = completionDirectives.map { "//$it" }.joinToString(separator = "\n")
- testCompletion(directives, JvmPlatform, { completionType, count -> myFixture.complete(completionType, count) })
+ testCompletion(directives,
+ JvmPlatforms.defaultJvmPlatform, { completionType, count -> myFixture.complete(completionType, count) })
}
private fun setupFixtureByCodeFragment(fragmentText: String) {
diff --git a/idea/tests/org/jetbrains/kotlin/idea/repl/AbstractIdeReplCompletionTest.kt b/idea/tests/org/jetbrains/kotlin/idea/repl/AbstractIdeReplCompletionTest.kt
index a57cda6d0a5..1a856616265 100644
--- a/idea/tests/org/jetbrains/kotlin/idea/repl/AbstractIdeReplCompletionTest.kt
+++ b/idea/tests/org/jetbrains/kotlin/idea/repl/AbstractIdeReplCompletionTest.kt
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.idea.completion.test.testCompletion
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
import org.jetbrains.kotlin.idea.util.application.runWriteAction
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.test.KotlinTestUtils
import java.io.File
@@ -37,7 +37,7 @@ abstract class AbstractIdeReplCompletionTest : KotlinFixtureCompletionBaseTestCa
super.tearDown()
}
- override fun getPlatform() = JvmPlatform
+ override fun getPlatform() = JvmPlatforms.defaultJvmPlatform
override fun defaultCompletionType() = CompletionType.BASIC
override fun doTest(testPath: String) {
diff --git a/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationCompletionTest.kt b/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationCompletionTest.kt
index c21eb0cf685..0a92d48a9a6 100644
--- a/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationCompletionTest.kt
+++ b/idea/tests/org/jetbrains/kotlin/idea/script/AbstractScriptConfigurationCompletionTest.kt
@@ -6,15 +6,19 @@
package org.jetbrains.kotlin.idea.script
import org.jetbrains.kotlin.idea.completion.test.testCompletion
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
abstract class AbstractScriptConfigurationCompletionTest : AbstractScriptConfigurationTest() {
fun doTest(path: String) {
configureScriptFile(path)
- testCompletion(file.text, JvmPlatform, additionalValidDirectives = switches, complete = { completionType, count ->
- setType(completionType)
- complete(count)
- myItems
- })
+ testCompletion(
+ file.text,
+ JvmPlatforms.defaultJvmPlatform,
+ additionalValidDirectives = switches,
+ complete = { completionType, count ->
+ setType(completionType)
+ complete(count)
+ myItems
+ })
}
}
\ No newline at end of file
diff --git a/js/js.frontend/src/org/jetbrains/kotlin/frontend/js/di/injection.kt b/js/js.frontend/src/org/jetbrains/kotlin/frontend/js/di/injection.kt
index 2e5329ab1f6..d44ca720cc0 100644
--- a/js/js.frontend/src/org/jetbrains/kotlin/frontend/js/di/injection.kt
+++ b/js/js.frontend/src/org/jetbrains/kotlin/frontend/js/di/injection.kt
@@ -17,7 +17,6 @@
package org.jetbrains.kotlin.frontend.js.di
import org.jetbrains.kotlin.config.LanguageVersionSettings
-import org.jetbrains.kotlin.config.TargetPlatformVersion
import org.jetbrains.kotlin.container.get
import org.jetbrains.kotlin.container.useImpl
import org.jetbrains.kotlin.container.useInstance
@@ -28,7 +27,6 @@ import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.frontend.di.configureModule
import org.jetbrains.kotlin.incremental.components.ExpectActualTracker
import org.jetbrains.kotlin.incremental.components.LookupTracker
-import org.jetbrains.kotlin.js.resolve.JsPlatform
import org.jetbrains.kotlin.js.resolve.JsPlatformCompilerServices
import org.jetbrains.kotlin.resolve.*
import org.jetbrains.kotlin.resolve.lazy.KotlinCodeAnalyzer
@@ -46,7 +44,12 @@ fun createTopDownAnalyzerForJs(
additionalPackages: List
): LazyTopDownAnalyzer {
val storageComponentContainer = createContainer("TopDownAnalyzerForJs", JsPlatformCompilerServices) {
- configureModule(moduleContext, JsPlatform, TargetPlatformVersion.NoVersion, JsPlatformCompilerServices, bindingTrace)
+ configureModule(
+ moduleContext,
+ DefaultBuiltInPlatforms.jsPlatform,
+ JsPlatformCompilerServices,
+ bindingTrace
+ )
useInstance(declarationProviderFactory)
useImpl()
diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/TopDownAnalyzerFacadeForJS.kt b/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/TopDownAnalyzerFacadeForJS.kt
index b1ecb5a5965..8d891e86c38 100644
--- a/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/TopDownAnalyzerFacadeForJS.kt
+++ b/js/js.frontend/src/org/jetbrains/kotlin/js/analyze/TopDownAnalyzerFacadeForJS.kt
@@ -67,7 +67,7 @@ object TopDownAnalyzerFacadeForJS {
ProjectContext(project),
Name.special("<$moduleName>"),
builtIns,
- multiTargetPlatform = null
+ platform = null
)
val additionalPackages = mutableListOf()
diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsPlatform.kt b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsPlatform.kt
deleted file mode 100644
index 8947e261a11..00000000000
--- a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsPlatform.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright 2010-2015 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.jetbrains.kotlin.js.resolve
-
-import org.jetbrains.kotlin.resolve.*
-
-object JsPlatform : TargetPlatform("JS") {
- override val platform: MultiTargetPlatform
- get() = MultiTargetPlatform.Specific(platformName)
-}
diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsResolverForModuleFactory.kt b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsResolverForModuleFactory.kt
index 5148ce1ae74..96ec5eea350 100644
--- a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsResolverForModuleFactory.kt
+++ b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsResolverForModuleFactory.kt
@@ -1,30 +1,20 @@
/*
- * Copyright 2010-2017 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Copyright 2010-2019 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.js.resolve
import org.jetbrains.kotlin.analyzer.*
import org.jetbrains.kotlin.config.LanguageVersionSettings
-import org.jetbrains.kotlin.config.TargetPlatformVersion
import org.jetbrains.kotlin.container.get
import org.jetbrains.kotlin.context.ModuleContext
import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.frontend.di.createContainerForLazyResolve
import org.jetbrains.kotlin.incremental.components.LookupTracker
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.js.JsPlatform
import org.jetbrains.kotlin.resolve.BindingTraceContext
import org.jetbrains.kotlin.resolve.TargetEnvironment
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
@@ -41,8 +31,7 @@ object JsResolverForModuleFactory : ResolverForModuleFactory() {
platformParameters: PlatformAnalysisParameters,
targetEnvironment: TargetEnvironment,
resolverForProject: ResolverForProject,
- languageVersionSettings: LanguageVersionSettings,
- targetPlatformVersion: TargetPlatformVersion
+ languageVersionSettings: LanguageVersionSettings
): ResolverForModule {
val (moduleInfo, syntheticFiles, moduleContentScope) = moduleContent
val project = moduleContext.project
@@ -58,8 +47,7 @@ object JsResolverForModuleFactory : ResolverForModuleFactory() {
moduleContext,
declarationProviderFactory,
BindingTraceContext(/* allowSliceRewrite = */ true),
- JsPlatform,
- TargetPlatformVersion.NoVersion,
+ moduleDescriptor.platform!!,
JsPlatformCompilerServices,
targetEnvironment,
languageVersionSettings
diff --git a/js/js.frontend/src/org/jetbrains/kotlin/platform/js/JsPlatform.kt b/js/js.frontend/src/org/jetbrains/kotlin/platform/js/JsPlatform.kt
new file mode 100644
index 00000000000..b20cc4e433b
--- /dev/null
+++ b/js/js.frontend/src/org/jetbrains/kotlin/platform/js/JsPlatform.kt
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2010-2019 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.platform.js
+
+import org.jetbrains.kotlin.platform.SimplePlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.toTargetPlatform
+
+abstract class JsPlatform : SimplePlatform("JS") {
+ override val oldFashionedDescription: String
+ get() = "JavaScript "
+}
+
+object JsPlatforms {
+ val defaultJsPlatform: TargetPlatform = object : JsPlatform() {}.toTargetPlatform()
+
+ val allJsPlatforms: List = listOf(defaultJsPlatform)
+}
+
+fun TargetPlatform?.isJs(): Boolean = this?.singleOrNull() is JsPlatform
\ No newline at end of file
diff --git a/konan/library-reader/src/org/jetbrains/kotlin/resolve/konan/platform/KonanPlatform.kt b/konan/library-reader/src/org/jetbrains/kotlin/resolve/konan/platform/KonanPlatform.kt
deleted file mode 100644
index 8a72506fb74..00000000000
--- a/konan/library-reader/src/org/jetbrains/kotlin/resolve/konan/platform/KonanPlatform.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-/*
- * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
- * 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.konan.platform
-
-import org.jetbrains.kotlin.resolve.*
-
-object KonanPlatform : TargetPlatform("Native") {
- override val platform = MultiTargetPlatform.Specific(platformName)
-}
diff --git a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/AndroidComponentRegistrar.kt b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/AndroidComponentRegistrar.kt
index 2ccccec5cea..f0d2c95560f 100644
--- a/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/AndroidComponentRegistrar.kt
+++ b/plugins/android-extensions/android-extensions-compiler/src/org/jetbrains/kotlin/android/synthetic/AndroidComponentRegistrar.kt
@@ -40,10 +40,10 @@ import org.jetbrains.kotlin.container.StorageComponentContainer
import org.jetbrains.kotlin.container.useInstance
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
-import org.jetbrains.kotlin.resolve.TargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
import org.jetbrains.kotlin.resolve.extensions.SyntheticResolveExtension
+import org.jetbrains.kotlin.platform.jvm.isJvm
import org.jetbrains.kotlin.resolve.jvm.extensions.PackageFragmentProviderExtension
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.utils.decodePluginOptions
object AndroidConfigurationKeys {
@@ -163,9 +163,9 @@ class AndroidComponentRegistrar : ComponentRegistrar {
class AndroidExtensionPropertiesComponentContainerContributor : StorageComponentContainerContributor {
override fun registerModuleComponents(
- container: StorageComponentContainer, platform: TargetPlatform, moduleDescriptor: ModuleDescriptor
+ container: StorageComponentContainer, platform: TargetPlatform, moduleDescriptor: ModuleDescriptor
) {
- if (platform != JvmPlatform) return
+ if (!platform.isJvm()) return
container.useInstance(AndroidExtensionPropertiesCallChecker())
container.useInstance(ParcelableDeclarationChecker())
diff --git a/plugins/android-extensions/android-extensions-idea/src/org/jetbrains/kotlin/android/synthetic/idea/ExperimentalUtils.kt b/plugins/android-extensions/android-extensions-idea/src/org/jetbrains/kotlin/android/synthetic/idea/ExperimentalUtils.kt
index 4d1b6108a50..cba19870c6d 100644
--- a/plugins/android-extensions/android-extensions-idea/src/org/jetbrains/kotlin/android/synthetic/idea/ExperimentalUtils.kt
+++ b/plugins/android-extensions/android-extensions-idea/src/org/jetbrains/kotlin/android/synthetic/idea/ExperimentalUtils.kt
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.android.synthetic.AndroidComponentRegistrar.Companio
import org.jetbrains.kotlin.compiler.plugin.AbstractCliOption
import org.jetbrains.kotlin.idea.core.unwrapModuleSourceInfo
import org.jetbrains.kotlin.idea.facet.KotlinFacet
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.isJvm
private val ANNOTATION_OPTION_PREFIX = "plugin:$ANDROID_COMPILER_PLUGIN_ID:"
@@ -53,7 +53,7 @@ private fun isTestMode(module: Module): Boolean {
internal val Module.androidExtensionsIsEnabled: Boolean
get() = isTestMode(this) || getOptionValueInFacet(ENABLED_OPTION) == "true"
-internal fun ModuleInfo.findAndroidModuleInfo() = unwrapModuleSourceInfo()?.takeIf { it.platform is JvmPlatform }
+internal fun ModuleInfo.findAndroidModuleInfo() = unwrapModuleSourceInfo()?.takeIf { it.platform.isJvm() }
internal val ModuleInfo.androidExtensionsIsEnabled: Boolean
get() {
diff --git a/plugins/android-extensions/android-extensions-idea/tests/org/jetbrains/kotlin/android/AbstractAndroidCompletionTest.kt b/plugins/android-extensions/android-extensions-idea/tests/org/jetbrains/kotlin/android/AbstractAndroidCompletionTest.kt
index 41409c6f1bf..788ae4a6c85 100644
--- a/plugins/android-extensions/android-extensions-idea/tests/org/jetbrains/kotlin/android/AbstractAndroidCompletionTest.kt
+++ b/plugins/android-extensions/android-extensions-idea/tests/org/jetbrains/kotlin/android/AbstractAndroidCompletionTest.kt
@@ -20,7 +20,7 @@ import com.intellij.codeInsight.CodeInsightSettings
import com.intellij.codeInsight.completion.CompletionType
import com.intellij.openapi.util.io.FileUtil
import org.jetbrains.kotlin.idea.completion.test.testCompletion
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import java.io.File
abstract class AbstractAndroidCompletionTest : KotlinAndroidTestCase() {
@@ -48,7 +48,8 @@ abstract class AbstractAndroidCompletionTest : KotlinAndroidTestCase() {
val virtualFile = myFixture.copyFileToProject(path + getTestName(true) + ".kt", "src/" + getTestName(true) + ".kt")
myFixture.configureFromExistingVirtualFile(virtualFile)
val fileText = FileUtil.loadFile(File(path + getTestName(true) + ".kt"), true)
- testCompletion(fileText, JvmPlatform, { completionType, count -> myFixture.complete(completionType, count) })
+ testCompletion(fileText,
+ JvmPlatforms.defaultJvmPlatform, { completionType, count -> myFixture.complete(completionType, count) })
}
override fun tearDown() {
diff --git a/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Plugin.kt b/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Plugin.kt
index 7bd9d1151c6..88fa543dd05 100644
--- a/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Plugin.kt
+++ b/plugins/kapt3/kapt3-compiler/src/org/jetbrains/kotlin/kapt3/Kapt3Plugin.kt
@@ -21,7 +21,6 @@ import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.analyzer.AnalysisResult
import org.jetbrains.kotlin.base.kapt3.*
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
-import org.jetbrains.kotlin.cli.common.config.KotlinSourceRoot
import org.jetbrains.kotlin.cli.common.messages.MessageRenderer
import org.jetbrains.kotlin.cli.common.messages.PrintingMessageCollector
import org.jetbrains.kotlin.cli.jvm.config.JavaSourceRoot
@@ -45,9 +44,9 @@ import org.jetbrains.kotlin.kapt3.base.util.KaptLogger
import org.jetbrains.kotlin.kapt3.util.MessageCollectorBackedKaptLogger
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.BindingTrace
-import org.jetbrains.kotlin.resolve.TargetPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.jvm.isJvm
import org.jetbrains.kotlin.resolve.jvm.extensions.AnalysisHandlerExtension
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.utils.decodePluginOptions
import java.io.ByteArrayInputStream
import java.io.File
@@ -242,7 +241,7 @@ class Kapt3ComponentRegistrar : ComponentRegistrar {
platform: TargetPlatform,
moduleDescriptor: ModuleDescriptor
) {
- if (platform != JvmPlatform) return
+ if (!platform.isJvm()) return
container.useInstance(KaptAnonymousTypeTransformer())
}
}
diff --git a/plugins/noarg/noarg-cli/src/NoArgPlugin.kt b/plugins/noarg/noarg-cli/src/NoArgPlugin.kt
index 43c6acb6dbf..5dd7dbc4414 100644
--- a/plugins/noarg/noarg-cli/src/NoArgPlugin.kt
+++ b/plugins/noarg/noarg-cli/src/NoArgPlugin.kt
@@ -30,8 +30,8 @@ import org.jetbrains.kotlin.noarg.NoArgConfigurationKeys.ANNOTATION
import org.jetbrains.kotlin.noarg.NoArgConfigurationKeys.INVOKE_INITIALIZERS
import org.jetbrains.kotlin.noarg.NoArgConfigurationKeys.PRESET
import org.jetbrains.kotlin.noarg.diagnostic.CliNoArgDeclarationChecker
-import org.jetbrains.kotlin.resolve.TargetPlatform
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.jvm.isJvm
object NoArgConfigurationKeys {
val ANNOTATION: CompilerConfigurationKey> =
@@ -89,9 +89,9 @@ class NoArgComponentRegistrar : ComponentRegistrar {
class CliNoArgComponentContainerContributor(val annotations: List) : StorageComponentContainerContributor {
override fun registerModuleComponents(
- container: StorageComponentContainer, platform: TargetPlatform, moduleDescriptor: ModuleDescriptor
+ container: StorageComponentContainer, platform: TargetPlatform, moduleDescriptor: ModuleDescriptor
) {
- if (platform != JvmPlatform) return
+ if (!platform.isJvm()) return
container.useInstance(CliNoArgDeclarationChecker(annotations))
}
diff --git a/plugins/noarg/noarg-ide/src/IdeStorageComponentContainerContributor.kt b/plugins/noarg/noarg-ide/src/IdeStorageComponentContainerContributor.kt
index cfb6762be81..25b97e506e9 100644
--- a/plugins/noarg/noarg-ide/src/IdeStorageComponentContainerContributor.kt
+++ b/plugins/noarg/noarg-ide/src/IdeStorageComponentContainerContributor.kt
@@ -21,14 +21,14 @@ import org.jetbrains.kotlin.container.StorageComponentContainer
import org.jetbrains.kotlin.container.useInstance
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
-import org.jetbrains.kotlin.resolve.TargetPlatform
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.jvm.isJvm
class IdeNoArgComponentContainerContributor(val project: Project) : StorageComponentContainerContributor {
override fun registerModuleComponents(
- container: StorageComponentContainer, platform: TargetPlatform, moduleDescriptor: ModuleDescriptor
+ container: StorageComponentContainer, platform: TargetPlatform, moduleDescriptor: ModuleDescriptor
) {
- if (platform != JvmPlatform) return
+ if (!platform.isJvm()) return
container.useInstance(IdeNoArgDeclarationChecker(project))
}
diff --git a/plugins/sam-with-receiver/sam-with-receiver-cli/src/SamWithReceiverPlugin.kt b/plugins/sam-with-receiver/sam-with-receiver-cli/src/SamWithReceiverPlugin.kt
index e7780e9b087..0cbb78d3ae5 100644
--- a/plugins/sam-with-receiver/sam-with-receiver-cli/src/SamWithReceiverPlugin.kt
+++ b/plugins/sam-with-receiver/sam-with-receiver-cli/src/SamWithReceiverPlugin.kt
@@ -24,8 +24,8 @@ import org.jetbrains.kotlin.container.StorageComponentContainer
import org.jetbrains.kotlin.container.useInstance
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
-import org.jetbrains.kotlin.resolve.TargetPlatform
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.jvm.isJvm
import org.jetbrains.kotlin.samWithReceiver.SamWithReceiverCommandLineProcessor.Companion.SUPPORTED_PRESETS
import org.jetbrains.kotlin.samWithReceiver.SamWithReceiverConfigurationKeys.ANNOTATION
import org.jetbrains.kotlin.samWithReceiver.SamWithReceiverConfigurationKeys.PRESET
@@ -74,7 +74,7 @@ class SamWithReceiverComponentRegistrar : ComponentRegistrar {
class CliSamWithReceiverComponentContributor(val annotations: List): StorageComponentContainerContributor {
override fun registerModuleComponents(container: StorageComponentContainer, platform: TargetPlatform, moduleDescriptor: ModuleDescriptor) {
- if (platform != JvmPlatform) return
+ if (!platform.isJvm()) return
container.useInstance(SamWithReceiverResolverExtension(annotations))
}
diff --git a/plugins/sam-with-receiver/sam-with-receiver-ide/src/IdeSamWithReceiverComponentContributor.kt b/plugins/sam-with-receiver/sam-with-receiver-ide/src/IdeSamWithReceiverComponentContributor.kt
index 0e43b2fb4e3..88efe8510b8 100644
--- a/plugins/sam-with-receiver/sam-with-receiver-ide/src/IdeSamWithReceiverComponentContributor.kt
+++ b/plugins/sam-with-receiver/sam-with-receiver-ide/src/IdeSamWithReceiverComponentContributor.kt
@@ -31,8 +31,8 @@ import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor
import org.jetbrains.kotlin.idea.caches.project.ModuleProductionSourceInfo
import org.jetbrains.kotlin.idea.caches.project.ScriptDependenciesInfo
import org.jetbrains.kotlin.idea.caches.project.ScriptModuleInfo
-import org.jetbrains.kotlin.resolve.TargetPlatform
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.jvm.isJvm
import org.jetbrains.kotlin.samWithReceiver.SamWithReceiverCommandLineProcessor.Companion.ANNOTATION_OPTION
import org.jetbrains.kotlin.samWithReceiver.SamWithReceiverCommandLineProcessor.Companion.PLUGIN_ID
import org.jetbrains.kotlin.samWithReceiver.SamWithReceiverResolverExtension
@@ -57,11 +57,11 @@ class IdeSamWithReceiverComponentContributor(val project: Project) : StorageComp
override fun registerModuleComponents(
- container: StorageComponentContainer,
- platform: TargetPlatform,
- moduleDescriptor: ModuleDescriptor
+ container: StorageComponentContainer,
+ platform: TargetPlatform,
+ moduleDescriptor: ModuleDescriptor
) {
- if (platform != JvmPlatform) return
+ if (!platform.isJvm()) return
val moduleInfo = moduleDescriptor.getCapability(ModuleInfo.Capability)
val annotations =
diff --git a/plugins/uast-kotlin-idea/src/IdeaKotlinUastResolveProviderService.kt b/plugins/uast-kotlin-idea/src/IdeaKotlinUastResolveProviderService.kt
index 30ca1091795..12d4a26acba 100644
--- a/plugins/uast-kotlin-idea/src/IdeaKotlinUastResolveProviderService.kt
+++ b/plugins/uast-kotlin-idea/src/IdeaKotlinUastResolveProviderService.kt
@@ -36,7 +36,7 @@ import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.calls.callUtil.getCall
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.isJvm
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.uast.kotlin.KotlinUastResolveProviderService
@@ -55,11 +55,11 @@ class IdeaKotlinUastResolveProviderService : KotlinUastResolveProviderService {
val containingFile = psiElement.containingFile
if (containingFile is KtFile) {
- return TargetPlatformDetector.getPlatform(containingFile) is JvmPlatform
+ return TargetPlatformDetector.getPlatform(containingFile).isJvm()
}
val module = psiElement.module
- return module == null || TargetPlatformDetector.getPlatform(module) is JvmPlatform
+ return module == null || TargetPlatformDetector.getPlatform(module).isJvm()
}
override fun getLanguageVersionSettings(element: KtElement): LanguageVersionSettings {
@@ -78,7 +78,7 @@ class IdeaKotlinUastResolveProviderService : KotlinUastResolveProviderService {
.getCachedValue(project, {
Result.create(
ModuleManager.getInstance(project).modules.all { module ->
- TargetPlatformDetector.getPlatform(module) is JvmPlatform
+ TargetPlatformDetector.getPlatform(module).isJvm()
},
ProjectRootModificationTracker.getInstance(project)
)
diff --git a/plugins/uast-kotlin-idea/src/IdeaKotlinUastResolveProviderService.kt.182 b/plugins/uast-kotlin-idea/src/IdeaKotlinUastResolveProviderService.kt.182
index 4805ad6b8a4..1eb04bffafb 100644
--- a/plugins/uast-kotlin-idea/src/IdeaKotlinUastResolveProviderService.kt.182
+++ b/plugins/uast-kotlin-idea/src/IdeaKotlinUastResolveProviderService.kt.182
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.idea.util.module
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtFile
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.platform.jvm.isJvm
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.uast.kotlin.KotlinUastResolveProviderService
@@ -51,11 +51,11 @@ class IdeaKotlinUastResolveProviderService : KotlinUastResolveProviderService {
val containingFile = psiElement.containingFile
if (containingFile is KtFile) {
- return TargetPlatformDetector.getPlatform(containingFile) is JvmPlatform
+ return TargetPlatformDetector.getPlatform(containingFile).isJvm()
}
val module = psiElement.module
- return module == null || TargetPlatformDetector.getPlatform(module) is JvmPlatform
+ return module == null || TargetPlatformDetector.getPlatform(module).isJvm()
}
override fun getLanguageVersionSettings(element: KtElement): LanguageVersionSettings {
@@ -67,7 +67,7 @@ class IdeaKotlinUastResolveProviderService : KotlinUastResolveProviderService {
.getCachedValue(project, {
Result.create(
ModuleManager.getInstance(project).modules.all { module ->
- TargetPlatformDetector.getPlatform(module) is JvmPlatform
+ TargetPlatformDetector.getPlatform(module).isJvm()
},
ProjectRootModificationTracker.getInstance(project)
)