Rename JVMPlatform and JSPlatform and make them nested in TargetPlatformKind

To avoid confusion with JvmPlatform and JsPlatform from frontend.java and
js.frontend respectively
This commit is contained in:
Alexander Udalov
2016-11-10 15:59:58 +03:00
parent d0f31a2bc2
commit 26a6ce9a31
5 changed files with 32 additions and 34 deletions
@@ -31,8 +31,18 @@ sealed class TargetPlatformKind<out Version : DescriptionAware>(
) : DescriptionAware { ) : DescriptionAware {
override val description = "$name ${version.description}" override val description = "$name ${version.description}"
class Jvm(version: JvmTarget) : TargetPlatformKind<JvmTarget>(version, "JVM") {
companion object {
val JVM_PLATFORMS by lazy { JvmTarget.values().map(::Jvm) }
operator fun get(version: JvmTarget) = JVM_PLATFORMS[version.ordinal]
}
}
object JavaScript : TargetPlatformKind<NoVersion>(NoVersion, "JavaScript")
companion object { companion object {
val ALL_PLATFORMS: List<TargetPlatformKind<*>> by lazy { JVMPlatform.JVM_PLATFORMS + JSPlatform } val ALL_PLATFORMS: List<TargetPlatformKind<*>> by lazy { Jvm.JVM_PLATFORMS + JavaScript }
} }
} }
@@ -40,16 +50,6 @@ object NoVersion : DescriptionAware {
override val description = "" override val description = ""
} }
class JVMPlatform(version: JvmTarget) : TargetPlatformKind<JvmTarget>(version, "JVM") {
companion object {
val JVM_PLATFORMS by lazy { JvmTarget.values().map(::JVMPlatform) }
operator fun get(version: JvmTarget) = JVM_PLATFORMS[version.ordinal]
}
}
object JSPlatform : TargetPlatformKind<NoVersion>(NoVersion, "JavaScript")
data class KotlinVersionInfo( data class KotlinVersionInfo(
var languageLevel: LanguageVersion? = null, var languageLevel: LanguageVersion? = null,
var apiLevel: LanguageVersion? = null, var apiLevel: LanguageVersion? = null,
@@ -36,7 +36,6 @@ import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments;
import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments; import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments;
import org.jetbrains.kotlin.cli.common.arguments.K2JsArgumentConstants; import org.jetbrains.kotlin.cli.common.arguments.K2JsArgumentConstants;
import org.jetbrains.kotlin.config.CompilerSettings; import org.jetbrains.kotlin.config.CompilerSettings;
import org.jetbrains.kotlin.config.JSPlatform;
import org.jetbrains.kotlin.config.TargetPlatformKind; import org.jetbrains.kotlin.config.TargetPlatformKind;
import org.jetbrains.kotlin.idea.KotlinBundle; import org.jetbrains.kotlin.idea.KotlinBundle;
import org.jetbrains.kotlin.idea.PluginStartupComponent; import org.jetbrains.kotlin.idea.PluginStartupComponent;
@@ -122,7 +121,7 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co
} }
public void setTargetPlatform(@Nullable TargetPlatformKind<?> targetPlatform) { public void setTargetPlatform(@Nullable TargetPlatformKind<?> targetPlatform) {
k2jsPanel.setVisible(JSPlatform.INSTANCE.equals(targetPlatform)); k2jsPanel.setVisible(TargetPlatformKind.JavaScript.INSTANCE.equals(targetPlatform));
} }
@SuppressWarnings("unused") @SuppressWarnings("unused")
@@ -25,8 +25,6 @@ import com.intellij.ide.IdeBundle
import com.intellij.openapi.roots.ui.configuration.libraries.AddCustomLibraryDialog import com.intellij.openapi.roots.ui.configuration.libraries.AddCustomLibraryDialog
import com.intellij.openapi.roots.ui.configuration.libraries.CustomLibraryDescription import com.intellij.openapi.roots.ui.configuration.libraries.CustomLibraryDescription
import com.intellij.openapi.roots.ui.configuration.libraries.LibraryPresentationManager import com.intellij.openapi.roots.ui.configuration.libraries.LibraryPresentationManager
import org.jetbrains.kotlin.config.JSPlatform
import org.jetbrains.kotlin.config.JVMPlatform
import org.jetbrains.kotlin.config.TargetPlatformKind import org.jetbrains.kotlin.config.TargetPlatformKind
import org.jetbrains.kotlin.idea.framework.JSLibraryStdDescription import org.jetbrains.kotlin.idea.framework.JSLibraryStdDescription
import org.jetbrains.kotlin.idea.framework.JavaRuntimeLibraryDescription import org.jetbrains.kotlin.idea.framework.JavaRuntimeLibraryDescription
@@ -43,8 +41,8 @@ class FrameworkLibraryValidatorWithDynamicDescription(
get() { get() {
val project = context.module.project val project = context.module.project
return when (this) { return when (this) {
is JVMPlatform -> JavaRuntimeLibraryDescription(project) is TargetPlatformKind.Jvm -> JavaRuntimeLibraryDescription(project)
is JSPlatform -> JSLibraryStdDescription(project) is TargetPlatformKind.JavaScript -> JSLibraryStdDescription(project)
} }
} }
@@ -24,7 +24,10 @@ import com.intellij.openapi.roots.ModuleRootManager
import com.intellij.openapi.roots.ModuleRootModel import com.intellij.openapi.roots.ModuleRootModel
import com.intellij.util.text.VersionComparatorUtil import com.intellij.util.text.VersionComparatorUtil
import org.jetbrains.kotlin.cli.common.arguments.copyBean import org.jetbrains.kotlin.cli.common.arguments.copyBean
import org.jetbrains.kotlin.config.* import org.jetbrains.kotlin.config.JvmTarget
import org.jetbrains.kotlin.config.KotlinFacetSettings
import org.jetbrains.kotlin.config.LanguageVersion
import org.jetbrains.kotlin.config.TargetPlatformKind
import org.jetbrains.kotlin.idea.compiler.configuration.Kotlin2JsCompilerArgumentsHolder import org.jetbrains.kotlin.idea.compiler.configuration.Kotlin2JsCompilerArgumentsHolder
import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCommonCompilerArgumentsHolder import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCommonCompilerArgumentsHolder
import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCompilerSettings import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCompilerSettings
@@ -41,8 +44,8 @@ private fun getRuntimeLibraryVersions(
targetPlatform: TargetPlatformKind<*> targetPlatform: TargetPlatformKind<*>
): Collection<String> { ): Collection<String> {
val presentationProvider = when (targetPlatform) { val presentationProvider = when (targetPlatform) {
is JSPlatform -> JSLibraryStdPresentationProvider.getInstance() is TargetPlatformKind.JavaScript -> JSLibraryStdPresentationProvider.getInstance()
is JVMPlatform -> JavaRuntimePresentationProvider.getInstance() is TargetPlatformKind.Jvm -> JavaRuntimePresentationProvider.getInstance()
} }
KotlinVersionInfoProvider.EP_NAME KotlinVersionInfoProvider.EP_NAME
@@ -60,15 +63,15 @@ private fun getRuntimeLibraryVersions(
} }
private fun getDefaultTargetPlatform(module: Module, rootModel: ModuleRootModel?): TargetPlatformKind<*> { private fun getDefaultTargetPlatform(module: Module, rootModel: ModuleRootModel?): TargetPlatformKind<*> {
if (getRuntimeLibraryVersions(module, rootModel, JSPlatform).any()) { if (getRuntimeLibraryVersions(module, rootModel, TargetPlatformKind.JavaScript).any()) {
return JSPlatform return TargetPlatformKind.JavaScript
} }
val sdk = ((rootModel ?: ModuleRootManager.getInstance(module))).sdk val sdk = ((rootModel ?: ModuleRootManager.getInstance(module))).sdk
val sdkVersion = (sdk?.sdkType as? JavaSdk)?.getVersion(sdk!!) val sdkVersion = (sdk?.sdkType as? JavaSdk)?.getVersion(sdk!!)
return when { return when {
sdkVersion != null && sdkVersion <= JavaSdkVersion.JDK_1_6 -> JVMPlatform[JvmTarget.JVM_1_6] sdkVersion != null && sdkVersion <= JavaSdkVersion.JDK_1_6 -> TargetPlatformKind.Jvm[JvmTarget.JVM_1_6]
else -> JVMPlatform[JvmTarget.JVM_1_8] else -> TargetPlatformKind.Jvm[JvmTarget.JVM_1_8]
} }
} }
@@ -92,7 +95,7 @@ internal fun getLibraryLanguageLevel(
rootModel: ModuleRootModel?, rootModel: ModuleRootModel?,
targetPlatform: TargetPlatformKind<*>? targetPlatform: TargetPlatformKind<*>?
): LanguageVersion { ): LanguageVersion {
val minVersion = getRuntimeLibraryVersions(module, rootModel, targetPlatform ?: JVMPlatform[JvmTarget.JVM_1_8]) val minVersion = getRuntimeLibraryVersions(module, rootModel, targetPlatform ?: TargetPlatformKind.Jvm[JvmTarget.JVM_1_8])
.minWith(VersionComparatorUtil.COMPARATOR) .minWith(VersionComparatorUtil.COMPARATOR)
return getDefaultLanguageLevel(module, minVersion) return getDefaultLanguageLevel(module, minVersion)
} }
@@ -130,9 +133,7 @@ internal fun KotlinFacetSettings.initializeIfNeeded(module: Module, rootModel: M
} }
val TargetPlatformKind<*>.mavenLibraryId: String val TargetPlatformKind<*>.mavenLibraryId: String
get() { get() = when (this) {
return when (this) { is TargetPlatformKind.Jvm -> KotlinJavaMavenConfigurator.STD_LIB_ID
is JVMPlatform -> KotlinJavaMavenConfigurator.STD_LIB_ID is TargetPlatformKind.JavaScript -> KotlinJavascriptMavenConfigurator.STD_LIB_ID
is JSPlatform -> KotlinJavascriptMavenConfigurator.STD_LIB_ID
}
} }
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments
import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
import org.jetbrains.kotlin.cli.common.arguments.copyBean import org.jetbrains.kotlin.cli.common.arguments.copyBean
import org.jetbrains.kotlin.config.CompilerSettings import org.jetbrains.kotlin.config.CompilerSettings
import org.jetbrains.kotlin.config.JVMPlatform import org.jetbrains.kotlin.config.TargetPlatformKind
import org.jetbrains.kotlin.jps.model.kotlinFacetExtension import org.jetbrains.kotlin.jps.model.kotlinFacetExtension
class JpsKotlinCompilerSettings : JpsElementBase<JpsKotlinCompilerSettings>() { class JpsKotlinCompilerSettings : JpsElementBase<JpsKotlinCompilerSettings>() {
@@ -78,7 +78,7 @@ class JpsKotlinCompilerSettings : JpsElementBase<JpsKotlinCompilerSettings>() {
fun getK2JvmCompilerArguments(module: JpsModule): K2JVMCompilerArguments { fun getK2JvmCompilerArguments(module: JpsModule): K2JVMCompilerArguments {
val defaultArguments = getSettings(module.project).k2JvmCompilerArguments val defaultArguments = getSettings(module.project).k2JvmCompilerArguments
val facetSettings = module.kotlinFacetExtension?.settings ?: return defaultArguments val facetSettings = module.kotlinFacetExtension?.settings ?: return defaultArguments
val targetPlatform = facetSettings.versionInfo.targetPlatformKind as? JVMPlatform ?: return defaultArguments val targetPlatform = facetSettings.versionInfo.targetPlatformKind as? TargetPlatformKind.Jvm ?: return defaultArguments
return copyBean(defaultArguments).apply { return copyBean(defaultArguments).apply {
jvmTarget = targetPlatform.version.description jvmTarget = targetPlatform.version.description
} }