[Platform API] Introduce fundamental abstraction of Platform
This is a large commit, which introduces general API for working with
abstraction of Platform.
- Add new abstraction to 'core' - SimplePlatform - which represents
exactly one platform
- Clients are strongly prohibited to create instances of SimplePlatform
by hand, instead, corresponding *Platforms abstraction should be used
(e.g. JvmPlatforms, JsPlatforms, KonanPlatforms)
- Move TargetPlatform to 'core', it represents now a collection of
SimplePlatforms
- Clients are strongly encouraged to use TargetPlatform
(not SimplePlatform) in API, to enforce checks for multiplatform
- Provide a helper-extensions to work with TargetPlatform
(in particular, for getting a specific component platform)
- Remove MultiTargetPlatform in favour of TargetPlatform
- Notably, this commit leaves another widely used duplicated abstraction,
namely, IdePlatform. For the sake sanity, removal of IdePlatform is
extracted in the separate commit.
This commit is contained in:
+3
-3
@@ -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"
|
||||
|
||||
+3
-3
@@ -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"
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user