[Platform API] Remove IdePlatform, use TargetPlatform instead
This commit is contained in:
+5
-2
@@ -40,7 +40,7 @@ val Module.sourceType: SourceType?
|
||||
val Module.isMPPModule: Boolean
|
||||
get() {
|
||||
val settings = facetSettings ?: return false
|
||||
return settings.platform.isCommon ||
|
||||
return settings.platform.isCommon() ||
|
||||
settings.implementedModuleNames.isNotEmpty() ||
|
||||
settings.kind.isNewMPP
|
||||
}
|
||||
@@ -68,7 +68,7 @@ val Module.implementedModules: List<Module>
|
||||
CachedValueProvider.Result(
|
||||
if (isNewMPPModule) {
|
||||
rootManager.dependencies.filter {
|
||||
it.isNewMPPModule && it.platform is CommonIdePlatformKind.Platform && it.externalProjectId == externalProjectId
|
||||
it.isNewMPPModule && it.platform.isCommon() && it.externalProjectId == externalProjectId
|
||||
}
|
||||
} else {
|
||||
val modelsProvider = IdeModelsProviderImpl(project)
|
||||
@@ -105,6 +105,9 @@ private fun Module.toInfo(type: SourceType): ModuleSourceInfo? = when (type) {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This function returns immediate parents in dependsOn graph
|
||||
*/
|
||||
val ModuleDescriptor.implementedDescriptors: List<ModuleDescriptor>
|
||||
get() {
|
||||
val moduleInfo = getCapability(ModuleInfo.Capability)
|
||||
|
||||
+1
-1
@@ -98,7 +98,7 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
|
||||
): ProjectResolutionFacade {
|
||||
val sdk = dependenciesModuleInfo.sdk
|
||||
val platform = /* Fallback to Common platform in CIDR (Java is not supported there) */
|
||||
DefaultIdeTargetPlatformKindProvider.defaultCompilerPlatform // TODO: Js scripts?
|
||||
DefaultIdeTargetPlatformKindProvider.defaultPlatform // TODO: Js scripts?
|
||||
val settings = PlatformAnalysisSettings(
|
||||
platform, sdk, true,
|
||||
LanguageFeature.ReleaseCoroutines.defaultState == LanguageFeature.State.ENABLED
|
||||
|
||||
+4
-1
@@ -38,6 +38,8 @@ import org.jetbrains.kotlin.idea.project.getLanguageVersionSettings
|
||||
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
||||
import org.jetbrains.kotlin.idea.project.platform
|
||||
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||
import org.jetbrains.kotlin.platform.jvm.JdkPlatform
|
||||
import org.jetbrains.kotlin.platform.subplatformOfType
|
||||
import org.jetbrains.kotlin.utils.Jsr305State
|
||||
|
||||
object IDELanguageSettingsProvider : LanguageSettingsProvider {
|
||||
@@ -75,7 +77,8 @@ object IDELanguageSettingsProvider : LanguageSettingsProvider {
|
||||
// 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
|
||||
is ModuleSourceInfo -> (moduleInfo.module.platform?.subplatformOfType<JdkPlatform>())?.targetVersion
|
||||
?: TargetPlatformVersion.NoVersion
|
||||
is ScriptModuleInfo -> getLanguageSettingsForScripts(project, moduleInfo.scriptDefinition).targetPlatformVersion
|
||||
is ScriptDependenciesInfo.ForFile -> getLanguageSettingsForScripts(project, moduleInfo.scriptDefinition).targetPlatformVersion
|
||||
else -> TargetPlatformVersion.NoVersion
|
||||
|
||||
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.platform.IdePlatformKind
|
||||
import org.jetbrains.kotlin.platform.orDefault
|
||||
import org.jetbrains.kotlin.config.VersionView
|
||||
import org.jetbrains.kotlin.platform.idePlatformKind
|
||||
|
||||
interface KotlinVersionInfoProvider {
|
||||
companion object {
|
||||
@@ -92,7 +93,7 @@ private fun Iterable<String>.addReleaseVersionIfNecessary(shouldAdd: Boolean): I
|
||||
|
||||
fun getRuntimeLibraryVersion(module: Module): String? {
|
||||
val targetPlatform = KotlinFacetSettingsProvider.getInstance(module.project).getInitializedSettings(module).platform
|
||||
val versions = getRuntimeLibraryVersions(module, null, targetPlatform.orDefault().kind)
|
||||
val versions = getRuntimeLibraryVersions(module, null, targetPlatform.orDefault().idePlatformKind)
|
||||
return versions.toSet().singleOrNull()
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.idea.vfilefinder.getLibraryKindForJar
|
||||
import org.jetbrains.kotlin.platform.CommonPlatforms
|
||||
import org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.platform.idePlatformKind
|
||||
import org.jetbrains.kotlin.platform.js.JsPlatforms
|
||||
import org.jetbrains.kotlin.utils.PathUtil
|
||||
import java.util.jar.Attributes
|
||||
@@ -57,12 +58,12 @@ object CommonLibraryKind : PersistentLibraryKind<DummyLibraryProperties>("kotlin
|
||||
val PersistentLibraryKind<*>?.platform: TargetPlatform
|
||||
get() = when (this) {
|
||||
is KotlinLibraryKind -> this.compilerPlatform
|
||||
else -> DefaultIdeTargetPlatformKindProvider.defaultCompilerPlatform
|
||||
else -> DefaultIdeTargetPlatformKindProvider.defaultPlatform
|
||||
}
|
||||
|
||||
fun getLibraryPlatform(project: Project, library: Library): TargetPlatform {
|
||||
if (library !is LibraryEx) return DefaultIdeTargetPlatformKindProvider.defaultCompilerPlatform
|
||||
if (library.isDisposed) return DefaultIdeTargetPlatformKindProvider.defaultCompilerPlatform
|
||||
if (library !is LibraryEx) return DefaultIdeTargetPlatformKindProvider.defaultPlatform
|
||||
if (library.isDisposed) return DefaultIdeTargetPlatformKindProvider.defaultPlatform
|
||||
|
||||
return library.effectiveKind(project).platform
|
||||
}
|
||||
@@ -87,7 +88,7 @@ fun detectLibraryKind(roots: Array<VirtualFile>): PersistentLibraryKind<*>? {
|
||||
|
||||
if (matchingResolution != null) return matchingResolution.libraryKind
|
||||
|
||||
return DefaultIdeTargetPlatformKindProvider.defaultPlatform.kind.resolution.libraryKind
|
||||
return DefaultIdeTargetPlatformKindProvider.defaultPlatform.idePlatformKind.resolution.libraryKind
|
||||
}
|
||||
|
||||
fun getLibraryJar(roots: Array<VirtualFile>, jarPattern: Pattern): VirtualFile? {
|
||||
|
||||
@@ -42,15 +42,16 @@ import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCompilerSettings
|
||||
import org.jetbrains.kotlin.idea.facet.getLibraryLanguageLevel
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider
|
||||
import org.jetbrains.kotlin.platform.IdePlatform
|
||||
import org.jetbrains.kotlin.platform.IdePlatformKind
|
||||
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
|
||||
import org.jetbrains.kotlin.platform.impl.isCommon
|
||||
import org.jetbrains.kotlin.platform.idePlatformKind
|
||||
import org.jetbrains.kotlin.platform.isCommon
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.psi.UserDataProperty
|
||||
import org.jetbrains.kotlin.config.JvmTarget
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.platform.impl.isCommon
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
import org.jetbrains.kotlin.utils.Jsr305State
|
||||
import java.io.File
|
||||
|
||||
@@ -64,7 +65,7 @@ var KtFile.forcedTargetPlatform: TargetPlatform? by UserDataProperty(Key.create(
|
||||
|
||||
fun Module.getAndCacheLanguageLevelByDependencies(): LanguageVersion {
|
||||
val facetSettings = KotlinFacetSettingsProvider.getInstance(project).getInitializedSettings(this)
|
||||
val languageLevel = getLibraryLanguageLevel(this, null, facetSettings.platform?.kind)
|
||||
val languageLevel = getLibraryLanguageLevel(this, null, facetSettings.platform?.idePlatformKind)
|
||||
|
||||
// Preserve inferred version in facet/project settings
|
||||
if (facetSettings.useProjectSettings) {
|
||||
@@ -196,7 +197,7 @@ private fun Module.computeLanguageVersionSettings(): LanguageVersionSettings {
|
||||
|
||||
val languageFeatures = facetSettings.mergedCompilerArguments?.configureLanguageFeatures(MessageCollector.NONE)?.apply {
|
||||
configureCoroutinesSupport(facetSettings.coroutineSupport, languageVersion)
|
||||
configureMultiplatformSupport(facetSettings.platform?.kind, this@computeLanguageVersionSettings)
|
||||
configureMultiplatformSupport(facetSettings.platform?.idePlatformKind, this@computeLanguageVersionSettings)
|
||||
configureNewInferenceSupportInIDE(project)
|
||||
}.orEmpty()
|
||||
|
||||
@@ -210,26 +211,26 @@ private fun Module.computeLanguageVersionSettings(): LanguageVersionSettings {
|
||||
)
|
||||
}
|
||||
|
||||
val Module.platform: IdePlatform<*, *>?
|
||||
val Module.platform: TargetPlatform?
|
||||
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<*, *>?
|
||||
val Project.platform: TargetPlatform?
|
||||
get() {
|
||||
val jvmTarget = Kotlin2JvmCompilerArgumentsHolder.getInstance(this).settings.jvmTarget ?: return null
|
||||
val version = JvmTarget.fromString(jvmTarget) ?: return null
|
||||
return JvmIdePlatformKind.Platform(version)
|
||||
return JvmPlatforms.jvmPlatformByTargetVersion(version)
|
||||
}
|
||||
|
||||
private val Module.implementsCommonModule: Boolean
|
||||
get() = !platform.isCommon
|
||||
&& ModuleRootManager.getInstance(this).dependencies.any { it.platform.isCommon }
|
||||
get() = !platform.isCommon() // FIXME(dsavvinov): this doesn't seems right, in multilevel-MPP 'common' modules can implement other commons
|
||||
&& ModuleRootManager.getInstance(this).dependencies.any { it.platform.isCommon() }
|
||||
|
||||
private fun parseArguments(
|
||||
platformKind: IdePlatform<*, *>,
|
||||
platformKind: TargetPlatform,
|
||||
additionalArguments: List<String>
|
||||
): CommonCompilerArguments {
|
||||
return platformKind.createArguments().also { parseCommandLineArguments(additionalArguments, it) }
|
||||
return platformKind.createArguments { parseCommandLineArguments(additionalArguments, this) }
|
||||
}
|
||||
|
||||
fun MutableMap<LanguageFeature, LanguageFeature.State>.configureCoroutinesSupport(
|
||||
|
||||
@@ -23,7 +23,7 @@ import com.intellij.psi.util.CachedValue;
|
||||
import com.intellij.psi.util.CachedValueProvider;
|
||||
import com.intellij.psi.util.CachedValuesManager;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.platform.IdePlatform;
|
||||
import org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProviderKt;
|
||||
import org.jetbrains.kotlin.platform.IdePlatformKindUtil;
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform;
|
||||
|
||||
@@ -38,8 +38,8 @@ public class ProjectStructureUtil {
|
||||
CachedValue<TargetPlatform> result = module.getUserData(PLATFORM_FOR_MODULE);
|
||||
if (result == null) {
|
||||
result = CachedValuesManager.getManager(module.getProject()).createCachedValue(() -> {
|
||||
IdePlatform<?, ?> platform = IdePlatformKindUtil.orDefault(PlatformKt.getPlatform(module));
|
||||
return CachedValueProvider.Result.create(platform.getKind().getCompilerPlatform(),
|
||||
TargetPlatform platform = DefaultIdeTargetPlatformKindProviderKt.orDefault(PlatformKt.getPlatform(module));
|
||||
return CachedValueProvider.Result.create(platform,
|
||||
ProjectRootModificationTracker.getInstance(module.getProject()));
|
||||
}, false);
|
||||
|
||||
|
||||
+2
-4
@@ -25,7 +25,6 @@ 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;
|
||||
@@ -66,8 +65,7 @@ public class TargetPlatformDetector {
|
||||
KotlinScriptDefinition scriptDefinition = DefinitionsKt.scriptDefinition(file);
|
||||
if (scriptDefinition != null) {
|
||||
String platformNameFromScriptDefinition = scriptDefinition.getPlatform();
|
||||
for (IdePlatform platform : IdePlatformKind.Companion.getAll_PLATFORMS()) {
|
||||
TargetPlatform compilerPlatform = platform.getKind().getCompilerPlatform();
|
||||
for (TargetPlatform compilerPlatform : IdePlatformKind.Companion.getAll_PLATFORMS()) {
|
||||
// FIXME(dsavvinov): get rid of matching by name
|
||||
SimplePlatform simplePlatform = CollectionsKt.single(compilerPlatform);
|
||||
if (simplePlatform.getPlatformName().equals(platformNameFromScriptDefinition)) {
|
||||
@@ -85,7 +83,7 @@ public class TargetPlatformDetector {
|
||||
}
|
||||
}
|
||||
|
||||
return DefaultIdeTargetPlatformKindProvider.Companion.getDefaultCompilerPlatform();
|
||||
return DefaultIdeTargetPlatformKindProvider.Companion.getDefaultPlatform();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
+4
-1
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.idea.inspections.gradle.findKotlinPluginVersion
|
||||
import org.jetbrains.kotlin.idea.platform.IdePlatformKindTooling
|
||||
import org.jetbrains.kotlin.idea.roots.migrateNonJvmSourceFolders
|
||||
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
import org.jetbrains.plugins.gradle.model.data.BuildScriptClasspathData
|
||||
import org.jetbrains.plugins.gradle.model.data.GradleSourceSetData
|
||||
|
||||
@@ -99,10 +100,12 @@ class KotlinSourceSetDataService : AbstractProjectDataService<GradleSourceSetDat
|
||||
?.let { findKotlinPluginVersion(it) }// ?: return null TODO: Fix in CLion or our plugin KT-27623
|
||||
|
||||
val platformKind = IdePlatformKindTooling.getTooling(kotlinSourceSet.platform).kind
|
||||
|
||||
// FIXME(dsavvinov): it seems to convert platforms back-and-forth, clean-up needed
|
||||
val platform = when (platformKind) {
|
||||
is JvmIdePlatformKind -> {
|
||||
val target = JvmTarget.fromString(moduleData.targetCompatibility ?: "") ?: JvmTarget.DEFAULT
|
||||
JvmIdePlatformKind.Platform(target)
|
||||
JvmPlatforms.jvmPlatformByTargetVersion(target)
|
||||
}
|
||||
else -> platformKind.defaultPlatform
|
||||
}
|
||||
|
||||
+10
-5
@@ -36,9 +36,14 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.config.KotlinFacetSettings;
|
||||
import org.jetbrains.kotlin.idea.facet.KotlinFacet;
|
||||
import org.jetbrains.kotlin.platform.IdePlatform;
|
||||
import org.jetbrains.kotlin.konan.target.KonanTargetKt;
|
||||
import org.jetbrains.kotlin.platform.IdePlatformKindUtil;
|
||||
import org.jetbrains.kotlin.platform.TargetPlatformKt;
|
||||
import org.jetbrains.kotlin.platform.impl.CommonIdePlatformUtil;
|
||||
import org.jetbrains.kotlin.platform.impl.NativeIdePlatformUtil;
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform;
|
||||
import org.jetbrains.kotlin.platform.PlatformUtilKt;
|
||||
import org.jetbrains.kotlin.platform.konan.KonanPlatformKt;
|
||||
import org.jetbrains.plugins.gradle.execution.build.CachedModuleDataFinder;
|
||||
import org.jetbrains.plugins.gradle.execution.build.GradleProjectTaskRunner;
|
||||
import org.jetbrains.plugins.gradle.service.project.GradleBuildSrcProjectsResolver;
|
||||
@@ -292,10 +297,10 @@ class KotlinMPPGradleProjectTaskRunner extends ProjectTaskRunner
|
||||
final KotlinFacet kotlinFacet = KotlinFacet.Companion.get(module);
|
||||
if (kotlinFacet == null) return false;
|
||||
|
||||
final IdePlatform platform = kotlinFacet.getConfiguration().getSettings().getPlatform();
|
||||
final TargetPlatform platform = kotlinFacet.getConfiguration().getSettings().getPlatform();
|
||||
if (platform == null) return false;
|
||||
|
||||
return NativeIdePlatformUtil.isKotlinNative(platform);
|
||||
return KonanPlatformKt.isNative(platform);
|
||||
}
|
||||
|
||||
private static boolean isCommonProductionSourceModule(Module module) {
|
||||
@@ -305,10 +310,10 @@ class KotlinMPPGradleProjectTaskRunner extends ProjectTaskRunner
|
||||
final KotlinFacetSettings facetSettings = kotlinFacet.getConfiguration().getSettings();
|
||||
if (facetSettings.isTestModule()) return false;
|
||||
|
||||
final IdePlatform platform = facetSettings.getPlatform();
|
||||
final TargetPlatform platform = facetSettings.getPlatform();
|
||||
if (platform == null) return false;
|
||||
|
||||
return CommonIdePlatformUtil.isCommon(platform);
|
||||
return TargetPlatformKt.isCommon(platform);
|
||||
}
|
||||
|
||||
private static Collection<String> findNativeGradleBuildTasks(Collection<String> gradleTasks, String sourceSetName) {
|
||||
|
||||
+10
-5
@@ -36,9 +36,14 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.config.KotlinFacetSettings;
|
||||
import org.jetbrains.kotlin.idea.facet.KotlinFacet;
|
||||
import org.jetbrains.kotlin.platform.IdePlatform;
|
||||
import org.jetbrains.kotlin.konan.target.KonanTargetKt;
|
||||
import org.jetbrains.kotlin.platform.IdePlatformKindUtil;
|
||||
import org.jetbrains.kotlin.platform.TargetPlatformKt;
|
||||
import org.jetbrains.kotlin.platform.impl.CommonIdePlatformUtil;
|
||||
import org.jetbrains.kotlin.platform.impl.NativeIdePlatformUtil;
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform;
|
||||
import org.jetbrains.kotlin.platform.PlatformUtilKt;
|
||||
import org.jetbrains.kotlin.platform.konan.KonanPlatformKt;
|
||||
import org.jetbrains.plugins.gradle.execution.build.CachedModuleDataFinder;
|
||||
import org.jetbrains.plugins.gradle.execution.build.GradleProjectTaskRunner;
|
||||
import org.jetbrains.plugins.gradle.service.project.GradleBuildSrcProjectsResolver;
|
||||
@@ -291,10 +296,10 @@ class KotlinMPPGradleProjectTaskRunner extends ProjectTaskRunner
|
||||
final KotlinFacet kotlinFacet = KotlinFacet.Companion.get(module);
|
||||
if (kotlinFacet == null) return false;
|
||||
|
||||
final IdePlatform platform = kotlinFacet.getConfiguration().getSettings().getPlatform();
|
||||
final TargetPlatform platform = kotlinFacet.getConfiguration().getSettings().getPlatform();
|
||||
if (platform == null) return false;
|
||||
|
||||
return NativeIdePlatformUtil.isKotlinNative(platform);
|
||||
return KonanPlatformKt.isNative(platform);
|
||||
}
|
||||
|
||||
private static boolean isCommonProductionSourceModule(Module module) {
|
||||
@@ -304,10 +309,10 @@ class KotlinMPPGradleProjectTaskRunner extends ProjectTaskRunner
|
||||
final KotlinFacetSettings facetSettings = kotlinFacet.getConfiguration().getSettings();
|
||||
if (facetSettings.isTestModule()) return false;
|
||||
|
||||
final IdePlatform platform = facetSettings.getPlatform();
|
||||
final TargetPlatform platform = facetSettings.getPlatform();
|
||||
if (platform == null) return false;
|
||||
|
||||
return CommonIdePlatformUtil.isCommon(platform);
|
||||
return TargetPlatformKt.isCommon(platform);
|
||||
}
|
||||
|
||||
private static Collection<String> findNativeGradleBuildTasks(Collection<String> gradleTasks, String sourceSetName) {
|
||||
|
||||
+2
-1
@@ -13,6 +13,7 @@ import com.intellij.openapi.module.Module
|
||||
import org.jetbrains.kotlin.config.KotlinFacetSettingsProvider
|
||||
import org.jetbrains.kotlin.idea.configuration.KotlinTargetData
|
||||
import org.jetbrains.kotlin.platform.impl.isCommon
|
||||
import org.jetbrains.kotlin.platform.isCommon
|
||||
import org.jetbrains.plugins.gradle.execution.test.runner.GradleTestTasksProvider
|
||||
import org.jetbrains.plugins.gradle.service.project.GradleProjectResolverUtil
|
||||
import org.jetbrains.plugins.gradle.util.GradleConstants
|
||||
@@ -51,7 +52,7 @@ class KotlinMPPGradleTestTasksProvider : GradleTestTasksProvider {
|
||||
|
||||
private fun isTestCommonModule(module: Module): Boolean {
|
||||
val settings = KotlinFacetSettingsProvider.getInstance(module.project).getInitializedSettings(module)
|
||||
return settings.platform.isCommon && settings.isTestModule
|
||||
return settings.platform.isCommon() && settings.isTestModule
|
||||
}
|
||||
|
||||
private fun getTaskNames(task: TaskData, namePrefix: String): List<String> {
|
||||
|
||||
+17
-17
@@ -11,9 +11,9 @@ import org.jetbrains.jps.model.java.JavaSourceRootType
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.idea.codeInsight.gradle.ExternalSystemImportingTestCase
|
||||
import org.jetbrains.kotlin.idea.codeInsight.gradle.MultiplePluginVersionGradleImportingTestCase
|
||||
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.CommonPlatforms
|
||||
import org.jetbrains.kotlin.platform.js.JsPlatforms
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
import org.junit.After
|
||||
import org.junit.Before
|
||||
@@ -60,7 +60,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
module("project")
|
||||
module("app")
|
||||
module("app_commonMain") {
|
||||
platform(CommonIdePlatformKind.Platform)
|
||||
platform(CommonPlatforms.defaultCommonPlatform)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion()}", DependencyScope.COMPILE)
|
||||
moduleDependency("lib_commonMain", DependencyScope.COMPILE)
|
||||
sourceFolder("app/src/commonMain/kotlin", SourceKotlinRootType)
|
||||
@@ -68,7 +68,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
inheritProjectOutput()
|
||||
}
|
||||
module("app_commonTest") {
|
||||
platform(CommonIdePlatformKind.Platform)
|
||||
platform(CommonPlatforms.defaultCommonPlatform)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion()}", DependencyScope.TEST)
|
||||
moduleDependency("lib_commonMain", DependencyScope.TEST)
|
||||
moduleDependency("app_commonMain", DependencyScope.TEST)
|
||||
@@ -77,7 +77,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
inheritProjectOutput()
|
||||
}
|
||||
module("app_jsMain") {
|
||||
platform(JsIdePlatformKind.Platform)
|
||||
platform(JsPlatforms.defaultJsPlatform)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-js:${kotlinVersion()}", DependencyScope.COMPILE)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion()}", DependencyScope.COMPILE)
|
||||
moduleDependency("lib_jsMain", DependencyScope.COMPILE)
|
||||
@@ -88,7 +88,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
outputPath("app/build/classes/kotlin/js/main", true)
|
||||
}
|
||||
module("app_jsTest") {
|
||||
platform(JsIdePlatformKind.Platform)
|
||||
platform(JsPlatforms.defaultJsPlatform)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-js:${kotlinVersion()}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion()}", DependencyScope.TEST)
|
||||
moduleDependency("lib_jsMain", DependencyScope.TEST)
|
||||
@@ -101,7 +101,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
outputPath("app/build/classes/kotlin/js/test", false)
|
||||
}
|
||||
module("app_jvmMain") {
|
||||
platform(JvmIdePlatformKind.Platform(JvmTarget.JVM_1_6))
|
||||
platform(JvmPlatforms.jvm16)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib:${kotlinVersion()}", DependencyScope.COMPILE)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion()}", DependencyScope.COMPILE)
|
||||
libraryDependency("Gradle: org.jetbrains:annotations:13.0", DependencyScope.COMPILE)
|
||||
@@ -114,7 +114,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
outputPath("app/build/classes/kotlin/jvm/main", true)
|
||||
}
|
||||
module("app_jvmTest") {
|
||||
platform(JvmIdePlatformKind.Platform(JvmTarget.JVM_1_6))
|
||||
platform(JvmPlatforms.jvm16)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib:${kotlinVersion()}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion()}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains:annotations:13.0", DependencyScope.TEST)
|
||||
@@ -129,7 +129,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
outputPath("app/build/classes/kotlin/jvm/test", false)
|
||||
}
|
||||
module("app_main") {
|
||||
platform(JvmIdePlatformKind.Platform(JvmTarget.JVM_1_8))
|
||||
platform(JvmPlatforms.jvm18)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib:${kotlinVersion()}", DependencyScope.COMPILE)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion()}", DependencyScope.COMPILE)
|
||||
libraryDependency("Gradle: org.jetbrains:annotations:13.0", DependencyScope.COMPILE)
|
||||
@@ -140,7 +140,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
inheritProjectOutput()
|
||||
}
|
||||
module("app_test") {
|
||||
platform(JvmIdePlatformKind.Platform(JvmTarget.JVM_1_8))
|
||||
platform(JvmPlatforms.jvm18)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib:${kotlinVersion()}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion()}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains:annotations:13.0", DependencyScope.TEST)
|
||||
@@ -153,14 +153,14 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
}
|
||||
module("lib")
|
||||
module("lib_commonMain") {
|
||||
platform(CommonIdePlatformKind.Platform)
|
||||
platform(CommonPlatforms.defaultCommonPlatform)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion()}", DependencyScope.COMPILE)
|
||||
sourceFolder("lib/src/commonMain/kotlin", SourceKotlinRootType)
|
||||
sourceFolder("lib/src/commonMain/resources", ResourceKotlinRootType)
|
||||
inheritProjectOutput()
|
||||
}
|
||||
module("lib_commonTest") {
|
||||
platform(CommonIdePlatformKind.Platform)
|
||||
platform(CommonPlatforms.defaultCommonPlatform)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion()}", DependencyScope.TEST)
|
||||
moduleDependency("lib_commonMain", DependencyScope.TEST)
|
||||
sourceFolder("lib/src/commonTest/kotlin", TestSourceKotlinRootType)
|
||||
@@ -168,7 +168,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
inheritProjectOutput()
|
||||
}
|
||||
module("lib_jsMain") {
|
||||
platform(JsIdePlatformKind.Platform)
|
||||
platform(JsPlatforms.defaultJsPlatform)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-js:${kotlinVersion()}", DependencyScope.COMPILE)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion()}", DependencyScope.COMPILE)
|
||||
moduleDependency("lib_commonMain", DependencyScope.COMPILE)
|
||||
@@ -177,7 +177,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
outputPath("lib/build/classes/kotlin/js/main", true)
|
||||
}
|
||||
module("lib_jsTest") {
|
||||
platform(JsIdePlatformKind.Platform)
|
||||
platform(JsPlatforms.defaultJsPlatform)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-js:${kotlinVersion()}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion()}", DependencyScope.TEST)
|
||||
moduleDependency("lib_commonMain", DependencyScope.TEST)
|
||||
@@ -188,7 +188,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
outputPath("lib/build/classes/kotlin/js/test", false)
|
||||
}
|
||||
module("lib_jvmMain") {
|
||||
platform(JvmIdePlatformKind.Platform(JvmTarget.JVM_1_6))
|
||||
platform(JvmPlatforms.jvm16)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib:${kotlinVersion()}", DependencyScope.COMPILE)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion()}", DependencyScope.COMPILE)
|
||||
libraryDependency("Gradle: org.jetbrains:annotations:13.0", DependencyScope.COMPILE)
|
||||
@@ -198,7 +198,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
outputPath("lib/build/classes/kotlin/jvm/main", true)
|
||||
}
|
||||
module("lib_jvmTest") {
|
||||
platform(JvmIdePlatformKind.Platform(JvmTarget.JVM_1_6))
|
||||
platform(JvmPlatforms.jvm16)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib:${kotlinVersion()}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains.kotlin:kotlin-stdlib-common:${kotlinVersion()}", DependencyScope.TEST)
|
||||
libraryDependency("Gradle: org.jetbrains:annotations:13.0", DependencyScope.TEST)
|
||||
|
||||
@@ -17,7 +17,8 @@ import org.jetbrains.jps.util.JpsPathUtil
|
||||
import org.jetbrains.kotlin.idea.facet.KotlinFacet
|
||||
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
||||
import org.jetbrains.kotlin.idea.project.platform
|
||||
import org.jetbrains.kotlin.platform.IdePlatform
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.platform.presentableDescription
|
||||
|
||||
class MessageCollector {
|
||||
private val builder = StringBuilder()
|
||||
@@ -109,11 +110,11 @@ class ModuleInfo(
|
||||
}
|
||||
}
|
||||
|
||||
fun platform(platform: IdePlatform<*, *>) {
|
||||
fun platform(platform: TargetPlatform) {
|
||||
val actualPlatform = module.platform
|
||||
if (actualPlatform != platform) {
|
||||
projectInfo.messageCollector.report(
|
||||
"Module '${module.name}': expected platform '${platform.description}' but found '${actualPlatform?.description}'"
|
||||
"Module '${module.name}': expected platform '${platform.presentableDescription}' but found '${actualPlatform?.presentableDescription}'"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+25
-23
@@ -53,6 +53,8 @@ import org.jetbrains.kotlin.platform.impl.isCommon
|
||||
import org.jetbrains.kotlin.platform.impl.isJavaScript
|
||||
import org.jetbrains.kotlin.platform.js.JsPlatforms
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
import org.jetbrains.kotlin.platform.js.isJs
|
||||
import org.jetbrains.kotlin.platform.isCommon
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
import org.junit.Assert
|
||||
import org.junit.Ignore
|
||||
@@ -104,7 +106,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
||||
Assert.assertEquals("1.1", apiLevel!!.versionString)
|
||||
Assert.assertFalse(compilerArguments!!.autoAdvanceLanguageVersion)
|
||||
Assert.assertFalse(compilerArguments!!.autoAdvanceApiVersion)
|
||||
Assert.assertEquals(JvmIdePlatformKind.Platform(JvmTarget.JVM_1_8), platform)
|
||||
Assert.assertEquals(JvmPlatforms.jvm18, platform)
|
||||
Assert.assertEquals("1.7", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
|
||||
Assert.assertEquals(
|
||||
"-Xdump-declarations-to=tmp -Xsingle-module",
|
||||
@@ -116,7 +118,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
||||
Assert.assertEquals("1.0", apiLevel!!.versionString)
|
||||
Assert.assertFalse(compilerArguments!!.autoAdvanceLanguageVersion)
|
||||
Assert.assertFalse(compilerArguments!!.autoAdvanceApiVersion)
|
||||
Assert.assertEquals(JvmIdePlatformKind.Platform(JvmTarget.JVM_1_6), platform)
|
||||
Assert.assertEquals(JvmPlatforms.jvm16, platform)
|
||||
Assert.assertEquals("1.6", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
|
||||
Assert.assertEquals(
|
||||
"-Xdump-declarations-to=tmpTest",
|
||||
@@ -160,7 +162,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
||||
with(facetSettings) {
|
||||
Assert.assertEquals("1.1", languageLevel!!.versionString)
|
||||
Assert.assertEquals("1.1", apiLevel!!.versionString)
|
||||
Assert.assertEquals(JvmIdePlatformKind.Platform(JvmTarget.JVM_1_8), platform)
|
||||
Assert.assertEquals(JvmPlatforms.jvm18, platform)
|
||||
Assert.assertEquals("1.7", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
|
||||
Assert.assertEquals(
|
||||
"-Xdump-declarations-to=tmp -Xsingle-module",
|
||||
@@ -170,7 +172,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
||||
with(testFacetSettings) {
|
||||
Assert.assertEquals("1.1", languageLevel!!.versionString)
|
||||
Assert.assertEquals("1.0", apiLevel!!.versionString)
|
||||
Assert.assertEquals(JvmIdePlatformKind.Platform(JvmTarget.JVM_1_6), platform)
|
||||
Assert.assertEquals(JvmPlatforms.jvm16, platform)
|
||||
Assert.assertEquals("1.6", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
|
||||
Assert.assertEquals(
|
||||
"-Xdump-declarations-to=tmpTest",
|
||||
@@ -204,7 +206,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
||||
with(facetSettings("project_myMain")) {
|
||||
Assert.assertEquals("1.1", languageLevel!!.versionString)
|
||||
Assert.assertEquals("1.1", apiLevel!!.versionString)
|
||||
Assert.assertEquals(JvmIdePlatformKind.Platform(JvmTarget.JVM_1_8), platform)
|
||||
Assert.assertEquals(JvmPlatforms.jvm18, platform)
|
||||
Assert.assertEquals("1.7", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
|
||||
Assert.assertEquals(
|
||||
"-Xdump-declarations-to=tmp -Xsingle-module",
|
||||
@@ -214,7 +216,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
||||
with(facetSettings("project_myTest")) {
|
||||
Assert.assertEquals("1.1", languageLevel!!.versionString)
|
||||
Assert.assertEquals("1.0", apiLevel!!.versionString)
|
||||
Assert.assertEquals(JvmIdePlatformKind.Platform(JvmTarget.JVM_1_6), platform)
|
||||
Assert.assertEquals(JvmPlatforms.jvm16, platform)
|
||||
Assert.assertEquals("1.6", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
|
||||
Assert.assertEquals(
|
||||
"-Xdump-declarations-to=tmpTest",
|
||||
@@ -250,7 +252,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
||||
with(facetSettings("project_myMain")) {
|
||||
Assert.assertEquals("1.1", languageLevel!!.versionString)
|
||||
Assert.assertEquals("1.1", apiLevel!!.versionString)
|
||||
Assert.assertEquals(JvmIdePlatformKind.Platform(JvmTarget.JVM_1_8), platform)
|
||||
Assert.assertEquals(JvmPlatforms.jvm18, platform)
|
||||
Assert.assertEquals("1.7", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
|
||||
Assert.assertEquals(
|
||||
"-Xdump-declarations-to=tmp -Xsingle-module",
|
||||
@@ -260,7 +262,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
||||
with(facetSettings("project_myTest")) {
|
||||
Assert.assertEquals("1.1", languageLevel!!.versionString)
|
||||
Assert.assertEquals("1.0", apiLevel!!.versionString)
|
||||
Assert.assertEquals(JvmIdePlatformKind.Platform(JvmTarget.JVM_1_6), platform)
|
||||
Assert.assertEquals(JvmPlatforms.jvm16, platform)
|
||||
Assert.assertEquals("1.6", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
|
||||
Assert.assertEquals(
|
||||
"-Xdump-declarations-to=tmpTest",
|
||||
@@ -316,7 +318,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
||||
Assert.assertEquals("1.1", apiLevel!!.versionString)
|
||||
Assert.assertFalse(compilerArguments!!.autoAdvanceLanguageVersion)
|
||||
Assert.assertFalse(compilerArguments!!.autoAdvanceApiVersion)
|
||||
Assert.assertTrue(platform.isJavaScript)
|
||||
Assert.assertTrue(platform.isJs())
|
||||
with(compilerArguments as K2JSCompilerArguments) {
|
||||
Assert.assertEquals(true, sourceMap)
|
||||
Assert.assertEquals("plain", moduleKind)
|
||||
@@ -332,7 +334,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
||||
Assert.assertEquals("1.0", apiLevel!!.versionString)
|
||||
Assert.assertFalse(compilerArguments!!.autoAdvanceLanguageVersion)
|
||||
Assert.assertFalse(compilerArguments!!.autoAdvanceApiVersion)
|
||||
Assert.assertTrue(platform.isJavaScript)
|
||||
Assert.assertTrue(platform.isJs())
|
||||
with(compilerArguments as K2JSCompilerArguments) {
|
||||
Assert.assertEquals(false, sourceMap)
|
||||
Assert.assertEquals("umd", moduleKind)
|
||||
@@ -378,7 +380,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
||||
with(facetSettings) {
|
||||
Assert.assertEquals("1.1", languageLevel!!.versionString)
|
||||
Assert.assertEquals("1.1", apiLevel!!.versionString)
|
||||
Assert.assertTrue(platform.isJavaScript)
|
||||
Assert.assertTrue(platform.isJs())
|
||||
}
|
||||
|
||||
val rootManager = ModuleRootManager.getInstance(getModule("project_main"))
|
||||
@@ -416,7 +418,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
||||
with(facetSettings("project_myMain")) {
|
||||
Assert.assertEquals("1.1", languageLevel!!.versionString)
|
||||
Assert.assertEquals("1.1", apiLevel!!.versionString)
|
||||
Assert.assertTrue(platform.isJavaScript)
|
||||
Assert.assertTrue(platform.isJs())
|
||||
with(compilerArguments as K2JSCompilerArguments) {
|
||||
Assert.assertEquals(true, sourceMap)
|
||||
Assert.assertEquals("plain", moduleKind)
|
||||
@@ -430,7 +432,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
||||
with(facetSettings("project_myTest")) {
|
||||
Assert.assertEquals("1.1", languageLevel!!.versionString)
|
||||
Assert.assertEquals("1.0", apiLevel!!.versionString)
|
||||
Assert.assertTrue(platform.isJavaScript)
|
||||
Assert.assertTrue(platform.isJs())
|
||||
with(compilerArguments as K2JSCompilerArguments) {
|
||||
Assert.assertEquals(false, sourceMap)
|
||||
Assert.assertEquals("umd", moduleKind)
|
||||
@@ -467,7 +469,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
||||
importProject()
|
||||
|
||||
with(facetSettings) {
|
||||
Assert.assertTrue(platform.isJavaScript)
|
||||
Assert.assertTrue(platform.isJs())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -479,7 +481,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
||||
with(facetSettings) {
|
||||
Assert.assertEquals("1.1", languageLevel!!.versionString)
|
||||
Assert.assertEquals("1.1", apiLevel!!.versionString)
|
||||
Assert.assertEquals(JvmIdePlatformKind.Platform(JvmTarget.JVM_1_6), platform)
|
||||
Assert.assertEquals(JvmPlatforms.jvm16, platform)
|
||||
}
|
||||
|
||||
Assert.assertEquals(
|
||||
@@ -508,7 +510,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
||||
with(facetSettings) {
|
||||
Assert.assertEquals("1.1", languageLevel!!.versionString)
|
||||
Assert.assertEquals("1.1", apiLevel!!.versionString)
|
||||
Assert.assertTrue(platform.isJavaScript)
|
||||
Assert.assertTrue(platform.isJs())
|
||||
}
|
||||
|
||||
val rootManager = ModuleRootManager.getInstance(getModule("project_main"))
|
||||
@@ -542,7 +544,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
||||
with(facetSettings) {
|
||||
Assert.assertEquals("1.1", languageLevel!!.versionString)
|
||||
Assert.assertEquals("1.1", apiLevel!!.versionString)
|
||||
Assert.assertTrue(platform.isCommon)
|
||||
Assert.assertTrue(platform.isCommon())
|
||||
}
|
||||
|
||||
val rootManager = ModuleRootManager.getInstance(getModule("project_main"))
|
||||
@@ -575,7 +577,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
||||
with(facetSettings("project")) {
|
||||
Assert.assertEquals("1.1", languageLevel!!.versionString)
|
||||
Assert.assertEquals("1.1", apiLevel!!.versionString)
|
||||
Assert.assertTrue(platform.isCommon)
|
||||
Assert.assertTrue(platform.isCommon())
|
||||
}
|
||||
|
||||
val rootManager = ModuleRootManager.getInstance(getModule("project"))
|
||||
@@ -603,7 +605,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
||||
with(facetSettings) {
|
||||
Assert.assertEquals("1.1", languageLevel!!.versionString)
|
||||
Assert.assertEquals("1.1", apiLevel!!.versionString)
|
||||
Assert.assertEquals(JvmIdePlatformKind.Platform(JvmTarget.JVM_1_6), platform)
|
||||
Assert.assertEquals(JvmPlatforms.jvm16, platform)
|
||||
}
|
||||
|
||||
Assert.assertEquals(
|
||||
@@ -632,7 +634,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
||||
with(facetSettings) {
|
||||
Assert.assertEquals("1.1", languageLevel!!.versionString)
|
||||
Assert.assertEquals("1.1", apiLevel!!.versionString)
|
||||
Assert.assertTrue(platform.isJavaScript)
|
||||
Assert.assertTrue(platform.isJs())
|
||||
}
|
||||
|
||||
Assert.assertEquals(
|
||||
@@ -721,7 +723,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
||||
importProject()
|
||||
|
||||
with(facetSettings("js-module")) {
|
||||
Assert.assertTrue(platform.isJavaScript)
|
||||
Assert.assertTrue(platform.isJs())
|
||||
}
|
||||
|
||||
val rootManager = ModuleRootManager.getInstance(getModule("js-module"))
|
||||
@@ -871,7 +873,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
||||
Assert.assertEquals("1.0", apiLevel!!.versionString)
|
||||
Assert.assertFalse(compilerArguments!!.autoAdvanceLanguageVersion)
|
||||
Assert.assertFalse(compilerArguments!!.autoAdvanceApiVersion)
|
||||
Assert.assertTrue(platform.isCommon)
|
||||
Assert.assertTrue(platform.isCommon())
|
||||
Assert.assertEquals("my/classpath", (compilerArguments as K2MetadataCompilerArguments).classpath)
|
||||
Assert.assertEquals("my/destination", (compilerArguments as K2MetadataCompilerArguments).destination)
|
||||
}
|
||||
@@ -881,7 +883,7 @@ class GradleFacetImportTest : GradleImportingTestCase() {
|
||||
Assert.assertEquals("1.0", apiLevel!!.versionString)
|
||||
Assert.assertFalse(compilerArguments!!.autoAdvanceLanguageVersion)
|
||||
Assert.assertFalse(compilerArguments!!.autoAdvanceApiVersion)
|
||||
Assert.assertTrue(platform.isCommon)
|
||||
Assert.assertTrue(platform.isCommon())
|
||||
Assert.assertEquals("my/test/classpath", (compilerArguments as K2MetadataCompilerArguments).classpath)
|
||||
Assert.assertEquals("my/test/destination", (compilerArguments as K2MetadataCompilerArguments).destination)
|
||||
}
|
||||
|
||||
@@ -22,9 +22,9 @@ import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
||||
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.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.utils.DescriptionAware
|
||||
|
||||
@Deprecated("Use IdePlatformKind instead.", level = DeprecationLevel.ERROR)
|
||||
@@ -188,7 +188,7 @@ class KotlinFacetSettings {
|
||||
compilerArguments!!.apiVersion = value?.versionString
|
||||
}
|
||||
|
||||
val platform: IdePlatform<*, *>?
|
||||
val platform: TargetPlatform?
|
||||
get() {
|
||||
val compilerArguments = this.compilerArguments ?: return null
|
||||
return IdePlatformKind.platformByCompilerArguments(compilerArguments)
|
||||
|
||||
@@ -25,10 +25,17 @@ import org.jdom.Element
|
||||
import org.jdom.Text
|
||||
import org.jetbrains.kotlin.cli.common.arguments.*
|
||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||
import org.jetbrains.kotlin.platform.IdePlatform
|
||||
import org.jetbrains.kotlin.platform.IdePlatformKind
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.platform.impl.FakeK2NativeCompilerArguments
|
||||
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
|
||||
import org.jetbrains.kotlin.platform.js.JsPlatform
|
||||
import org.jetbrains.kotlin.platform.jvm.JdkPlatform
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatform
|
||||
import org.jetbrains.kotlin.platform.konan.KonanPlatform
|
||||
import org.jetbrains.kotlin.platform.oldFashionedDescription
|
||||
import org.jetbrains.kotlin.platform.orDefault
|
||||
import org.jetbrains.kotlin.resolve.*
|
||||
import java.lang.reflect.Modifier
|
||||
import kotlin.reflect.KClass
|
||||
import kotlin.reflect.full.superclasses
|
||||
@@ -39,6 +46,20 @@ private fun Element.getOptionValue(name: String) = getOption(name)?.getAttribute
|
||||
|
||||
private fun Element.getOptionBody(name: String) = getOption(name)?.children?.firstOrNull()
|
||||
|
||||
fun TargetPlatform.createArguments(init: (CommonCompilerArguments).() -> Unit = {}): CommonCompilerArguments {
|
||||
return when (val singlePlatform = singleOrNull()) {
|
||||
null -> K2MetadataCompilerArguments().apply { init() }
|
||||
is JvmPlatform -> K2JVMCompilerArguments().apply {
|
||||
init()
|
||||
// TODO(dsavvinov): review this
|
||||
jvmTarget = (singlePlatform as? JdkPlatform)?.targetVersion?.description ?: JvmTarget.DEFAULT.description
|
||||
}
|
||||
is JsPlatform -> K2JSCompilerArguments().apply { init() }
|
||||
is KonanPlatform -> FakeK2NativeCompilerArguments().apply { init() }
|
||||
else -> error("Unknown platform $singlePlatform")
|
||||
}
|
||||
}
|
||||
|
||||
private fun readV1Config(element: Element): KotlinFacetSettings {
|
||||
return KotlinFacetSettings().apply {
|
||||
val useProjectSettings = element.getOptionValue("useProjectSettings")?.toBoolean()
|
||||
@@ -48,8 +69,8 @@ private fun readV1Config(element: Element): KotlinFacetSettings {
|
||||
val languageLevel = versionInfoElement?.getOptionValue("languageLevel")
|
||||
val apiLevel = versionInfoElement?.getOptionValue("apiLevel")
|
||||
val targetPlatform = IdePlatformKind.All_PLATFORMS
|
||||
.firstOrNull { it.description == targetPlatformName }
|
||||
?: JvmIdePlatformKind.defaultPlatform
|
||||
.firstOrNull { it.oldFashionedDescription == targetPlatformName }
|
||||
?: JvmIdePlatformKind.defaultPlatform // FIXME(dsavvinov): choose proper default
|
||||
|
||||
val compilerInfoElement = element.getOptionBody("compilerInfo")
|
||||
|
||||
@@ -98,10 +119,10 @@ private fun readV1Config(element: Element): KotlinFacetSettings {
|
||||
}
|
||||
}
|
||||
|
||||
fun Element.getFacetPlatformByConfigurationElement(): IdePlatform<*, *> {
|
||||
fun Element.getFacetPlatformByConfigurationElement(): TargetPlatform {
|
||||
val platformName = getAttributeValue("platform")
|
||||
return IdePlatformKind.All_PLATFORMS
|
||||
.firstOrNull { it.description == platformName }
|
||||
.firstOrNull { it.oldFashionedDescription == platformName }
|
||||
.orDefault()
|
||||
}
|
||||
|
||||
@@ -268,7 +289,7 @@ private fun KotlinFacetSettings.writeLatestConfig(element: Element) {
|
||||
val filter = SkipDefaultsSerializationFilter()
|
||||
|
||||
platform?.let {
|
||||
element.setAttribute("platform", it.description)
|
||||
element.setAttribute("platform", it.oldFashionedDescription)
|
||||
}
|
||||
if (!useProjectSettings) {
|
||||
element.setAttribute("useProjectSettings", useProjectSettings.toString())
|
||||
|
||||
+13
-7
@@ -7,23 +7,29 @@ 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.platform.jvm.JvmPlatforms
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
|
||||
interface DefaultIdeTargetPlatformKindProvider {
|
||||
val defaultPlatform: IdePlatform<*, *>
|
||||
val defaultPlatform: TargetPlatform
|
||||
|
||||
companion object {
|
||||
val defaultPlatform: IdePlatform<*, *>
|
||||
val defaultPlatform: TargetPlatform
|
||||
get() {
|
||||
if (isJps) {
|
||||
// TODO support passing custom platforms in JPS
|
||||
return JvmIdePlatformKind.defaultPlatform
|
||||
return JvmPlatforms.defaultJvmPlatform
|
||||
}
|
||||
|
||||
return ServiceManager.getService(DefaultIdeTargetPlatformKindProvider::class.java).defaultPlatform
|
||||
}
|
||||
|
||||
val defaultCompilerPlatform: TargetPlatform
|
||||
get() = defaultPlatform.kind.compilerPlatform
|
||||
}
|
||||
}
|
||||
|
||||
fun TargetPlatform?.orDefault(): TargetPlatform {
|
||||
return this ?: DefaultIdeTargetPlatformKindProvider.defaultPlatform
|
||||
}
|
||||
|
||||
fun IdePlatformKind<*>?.orDefault(): IdePlatformKind<*> {
|
||||
return this ?: DefaultIdeTargetPlatformKindProvider.defaultPlatform.idePlatformKind
|
||||
}
|
||||
@@ -1,21 +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.platform
|
||||
|
||||
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
||||
import org.jetbrains.kotlin.utils.DescriptionAware
|
||||
|
||||
abstract class IdePlatform<Kind : IdePlatformKind<Kind>, out Arguments : CommonCompilerArguments> : DescriptionAware {
|
||||
abstract val kind: Kind
|
||||
abstract val version: TargetPlatformVersion
|
||||
|
||||
abstract fun createArguments(init: Arguments.() -> Unit = {}): Arguments
|
||||
|
||||
override val description
|
||||
get() = kind.name + " " + version.description
|
||||
|
||||
override fun toString() = description
|
||||
}
|
||||
@@ -13,20 +13,22 @@ 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.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
|
||||
|
||||
abstract class IdePlatformKind<Kind : IdePlatformKind<Kind>> {
|
||||
abstract val compilerPlatform: TargetPlatform
|
||||
abstract val platforms: List<IdePlatform<Kind, *>>
|
||||
abstract val platforms: List<TargetPlatform>
|
||||
|
||||
abstract val defaultPlatform: IdePlatform<Kind, *>
|
||||
abstract val defaultPlatform: TargetPlatform
|
||||
|
||||
abstract fun platformByCompilerArguments(arguments: CommonCompilerArguments): IdePlatform<Kind, CommonCompilerArguments>?
|
||||
abstract fun platformByCompilerArguments(arguments: CommonCompilerArguments): TargetPlatform?
|
||||
|
||||
abstract val argumentsClass: Class<out CommonCompilerArguments>
|
||||
|
||||
abstract val name: String
|
||||
|
||||
abstract fun createArguments(): CommonCompilerArguments
|
||||
|
||||
override fun equals(other: Any?): Boolean = javaClass == other?.javaClass
|
||||
override fun hashCode(): Int = javaClass.hashCode()
|
||||
|
||||
@@ -56,21 +58,17 @@ abstract class IdePlatformKind<Kind : IdePlatformKind<Kind>> {
|
||||
|
||||
val All_PLATFORMS by lazy { ALL_KINDS.flatMap { it.platforms } }
|
||||
|
||||
val IDE_PLATFORMS_BY_COMPILER_PLATFORMS by lazy { ALL_KINDS.map { it.compilerPlatform to it }.toMap() }
|
||||
val IDE_PLATFORMS_BY_COMPILER_PLATFORMS by lazy {
|
||||
ALL_KINDS.flatMap { idePlatformKind ->
|
||||
idePlatformKind.platforms.map { compilerPlatform -> compilerPlatform to idePlatformKind }
|
||||
}.toMap()
|
||||
}
|
||||
|
||||
fun <Args : CommonCompilerArguments> platformByCompilerArguments(arguments: Args): IdePlatform<*, *>? =
|
||||
fun <Args : CommonCompilerArguments> platformByCompilerArguments(arguments: Args): TargetPlatform? =
|
||||
ALL_KINDS.firstNotNullResult { it.platformByCompilerArguments(arguments) }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
val TargetPlatform.idePlatformKind: IdePlatformKind<*>
|
||||
get() = IdePlatformKind.IDE_PLATFORMS_BY_COMPILER_PLATFORMS[this] ?: error("Unknown platform $this")
|
||||
|
||||
fun IdePlatformKind<*>?.orDefault(): IdePlatformKind<*> {
|
||||
return this ?: DefaultIdeTargetPlatformKindProvider.defaultPlatform.kind
|
||||
}
|
||||
|
||||
fun IdePlatform<*, *>?.orDefault(): IdePlatform<*, *> {
|
||||
return this ?: DefaultIdeTargetPlatformKindProvider.defaultPlatform
|
||||
}
|
||||
get() = IdePlatformKind.IDE_PLATFORMS_BY_COMPILER_PLATFORMS[this] ?: error("Unknown platform $this")
|
||||
+12
-18
@@ -9,35 +9,29 @@ package org.jetbrains.kotlin.platform.impl
|
||||
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
||||
import org.jetbrains.kotlin.cli.common.arguments.K2MetadataCompilerArguments
|
||||
import org.jetbrains.kotlin.platform.CommonPlatforms
|
||||
import org.jetbrains.kotlin.platform.IdePlatform
|
||||
import org.jetbrains.kotlin.platform.IdePlatformKind
|
||||
import org.jetbrains.kotlin.platform.TargetPlatformVersion
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
|
||||
object CommonIdePlatformKind : IdePlatformKind<CommonIdePlatformKind>() {
|
||||
|
||||
override fun platformByCompilerArguments(arguments: CommonCompilerArguments): IdePlatform<CommonIdePlatformKind, CommonCompilerArguments>? {
|
||||
return if (arguments is K2MetadataCompilerArguments) Platform
|
||||
else null
|
||||
override fun platformByCompilerArguments(arguments: CommonCompilerArguments): TargetPlatform? {
|
||||
return if (arguments is K2MetadataCompilerArguments)
|
||||
CommonPlatforms.defaultCommonPlatform
|
||||
else
|
||||
null
|
||||
}
|
||||
|
||||
override val compilerPlatform get() = CommonPlatforms.defaultCommonPlatform
|
||||
override fun createArguments(): CommonCompilerArguments {
|
||||
return K2MetadataCompilerArguments() // TODO(dsavvinov): review that, as now MPP !== K2Metadata
|
||||
}
|
||||
|
||||
override val platforms get() = listOf(Platform)
|
||||
override val defaultPlatform get() = Platform
|
||||
override val platforms get() = listOf(CommonPlatforms.defaultCommonPlatform)
|
||||
override val defaultPlatform get() = CommonPlatforms.defaultCommonPlatform
|
||||
|
||||
override val argumentsClass get() = K2MetadataCompilerArguments::class.java
|
||||
|
||||
override val name get() = "Common (experimental)"
|
||||
|
||||
object Platform : IdePlatform<CommonIdePlatformKind, CommonCompilerArguments>() {
|
||||
override val kind get() = CommonIdePlatformKind
|
||||
override val version get() = TargetPlatformVersion.NoVersion
|
||||
override fun createArguments(init: CommonCompilerArguments.() -> Unit) = K2MetadataCompilerArguments().apply(init)
|
||||
}
|
||||
}
|
||||
|
||||
val IdePlatformKind<*>?.isCommon
|
||||
get() = this is CommonIdePlatformKind
|
||||
|
||||
val IdePlatform<*, *>?.isCommon
|
||||
get() = this is CommonIdePlatformKind.Platform
|
||||
get() = this is CommonIdePlatformKind
|
||||
@@ -8,36 +8,30 @@ 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.platform.TargetPlatformVersion
|
||||
import org.jetbrains.kotlin.platform.IdePlatform
|
||||
import org.jetbrains.kotlin.platform.IdePlatformKind
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.platform.js.JsPlatforms
|
||||
|
||||
object JsIdePlatformKind : IdePlatformKind<JsIdePlatformKind>() {
|
||||
|
||||
override fun platformByCompilerArguments(arguments: CommonCompilerArguments): IdePlatform<JsIdePlatformKind, CommonCompilerArguments>? {
|
||||
return if (arguments is K2JSCompilerArguments) Platform
|
||||
else null
|
||||
override fun platformByCompilerArguments(arguments: CommonCompilerArguments): TargetPlatform? {
|
||||
return if (arguments is K2JSCompilerArguments)
|
||||
JsPlatforms.defaultJsPlatform
|
||||
else
|
||||
null
|
||||
}
|
||||
|
||||
override val compilerPlatform get() = JsPlatforms.defaultJsPlatform
|
||||
override val platforms get() = listOf(JsPlatforms.defaultJsPlatform)
|
||||
override val defaultPlatform get() = JsPlatforms.defaultJsPlatform
|
||||
|
||||
override val platforms get() = listOf(Platform)
|
||||
override val defaultPlatform get() = Platform
|
||||
override fun createArguments(): CommonCompilerArguments {
|
||||
return K2JSCompilerArguments()
|
||||
}
|
||||
|
||||
override val argumentsClass get() = K2JSCompilerArguments::class.java
|
||||
|
||||
override val name get() = "JavaScript"
|
||||
|
||||
object Platform : IdePlatform<JsIdePlatformKind, K2JSCompilerArguments>() {
|
||||
override val kind get() = JsIdePlatformKind
|
||||
override val version get() = TargetPlatformVersion.NoVersion
|
||||
override fun createArguments(init: K2JSCompilerArguments.() -> Unit) = K2JSCompilerArguments().apply(init)
|
||||
}
|
||||
}
|
||||
|
||||
val IdePlatformKind<*>?.isJavaScript
|
||||
get() = this is JsIdePlatformKind
|
||||
|
||||
val IdePlatform<*, *>?.isJavaScript
|
||||
get() = this is JsIdePlatformKind.Platform
|
||||
|
||||
@@ -11,41 +11,36 @@ import com.intellij.util.text.VersionComparatorUtil
|
||||
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
||||
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.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
|
||||
object JvmIdePlatformKind : IdePlatformKind<JvmIdePlatformKind>() {
|
||||
|
||||
override fun platformByCompilerArguments(arguments: CommonCompilerArguments): IdePlatform<JvmIdePlatformKind, CommonCompilerArguments>? {
|
||||
return if (arguments is K2JVMCompilerArguments) {
|
||||
val jvmTarget = arguments.jvmTarget ?: JvmTarget.DEFAULT.description
|
||||
platforms.firstOrNull { platform ->
|
||||
VersionComparatorUtil.COMPARATOR.compare(platform.version.description, jvmTarget) >= 0
|
||||
}
|
||||
} else null
|
||||
override fun platformByCompilerArguments(arguments: CommonCompilerArguments): TargetPlatform? {
|
||||
if (arguments !is K2JVMCompilerArguments) return null
|
||||
|
||||
val jvmTargetDescription = arguments.jvmTarget
|
||||
?: return JvmPlatforms.defaultJvmPlatform
|
||||
|
||||
val jvmTarget = JvmTarget.values()
|
||||
.firstOrNull { VersionComparatorUtil.COMPARATOR.compare(it.description, jvmTargetDescription) >= 0 }
|
||||
?: return JvmPlatforms.defaultJvmPlatform
|
||||
|
||||
return JvmPlatforms.jvmPlatformByTargetVersion(jvmTarget)
|
||||
}
|
||||
|
||||
override val compilerPlatform get() = JvmPlatforms.defaultJvmPlatform
|
||||
override fun createArguments(): CommonCompilerArguments {
|
||||
return K2JVMCompilerArguments()
|
||||
}
|
||||
|
||||
override val platforms = JvmTarget.values().map { ver -> Platform(ver) }
|
||||
override val defaultPlatform get() = Platform(JvmTarget.DEFAULT)
|
||||
override val platforms = JvmTarget.values().map { ver -> JvmPlatforms.jvmPlatformByTargetVersion(ver) }
|
||||
override val defaultPlatform get() = JvmPlatforms.defaultJvmPlatform
|
||||
|
||||
override val argumentsClass get() = K2JVMCompilerArguments::class.java
|
||||
|
||||
override val name get() = "JVM"
|
||||
|
||||
data class Platform(override val version: JvmTarget) : IdePlatform<JvmIdePlatformKind, K2JVMCompilerArguments>() {
|
||||
override val kind get() = JvmIdePlatformKind
|
||||
|
||||
override fun createArguments(init: K2JVMCompilerArguments.() -> Unit) = K2JVMCompilerArguments()
|
||||
.apply(init)
|
||||
.apply { jvmTarget = this@Platform.version.description }
|
||||
}
|
||||
}
|
||||
|
||||
val IdePlatformKind<*>?.isJvm
|
||||
get() = this is JvmIdePlatformKind
|
||||
|
||||
val IdePlatform<*, *>?.isJvm
|
||||
get() = this is JvmIdePlatformKind.Platform
|
||||
+20
-21
@@ -7,32 +7,34 @@
|
||||
package org.jetbrains.kotlin.platform.impl
|
||||
|
||||
import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments
|
||||
import org.jetbrains.kotlin.platform.TargetPlatformVersion
|
||||
import org.jetbrains.kotlin.platform.IdePlatform
|
||||
import org.jetbrains.kotlin.platform.IdePlatformKind
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.platform.konan.KonanPlatforms
|
||||
|
||||
object NativeIdePlatformKind : IdePlatformKind<NativeIdePlatformKind>() {
|
||||
|
||||
override fun platformByCompilerArguments(arguments: CommonCompilerArguments): IdePlatform<NativeIdePlatformKind, CommonCompilerArguments>? {
|
||||
return if (arguments is FakeK2NativeCompilerArguments) Platform
|
||||
else null
|
||||
override fun platformByCompilerArguments(arguments: CommonCompilerArguments): TargetPlatform? {
|
||||
return if (arguments is FakeK2NativeCompilerArguments)
|
||||
KonanPlatforms.defaultKonanPlatform
|
||||
else
|
||||
null
|
||||
}
|
||||
|
||||
override val compilerPlatform get() = KonanPlatforms.defaultKonanPlatform
|
||||
|
||||
override val platforms get() = listOf(Platform)
|
||||
override val defaultPlatform get() = Platform
|
||||
|
||||
override val argumentsClass get() = FakeK2NativeCompilerArguments::class.java
|
||||
|
||||
override val name get() = "Native"
|
||||
|
||||
object Platform : IdePlatform<NativeIdePlatformKind, FakeK2NativeCompilerArguments>() {
|
||||
override val kind get() = NativeIdePlatformKind
|
||||
override val version get() = TargetPlatformVersion.NoVersion
|
||||
override fun createArguments(init: FakeK2NativeCompilerArguments.() -> Unit) = FakeK2NativeCompilerArguments().apply(init)
|
||||
override fun createArguments(): CommonCompilerArguments {
|
||||
return FakeK2NativeCompilerArguments()
|
||||
}
|
||||
|
||||
override val defaultPlatform: TargetPlatform
|
||||
get() = KonanPlatforms.defaultKonanPlatform
|
||||
|
||||
override val platforms
|
||||
get() = listOf(KonanPlatforms.defaultKonanPlatform)
|
||||
|
||||
override val argumentsClass
|
||||
get() = FakeK2NativeCompilerArguments::class.java
|
||||
|
||||
override val name
|
||||
get() = "Native"
|
||||
}
|
||||
|
||||
// These are fake compiler arguments for Kotlin/Native - only for usage within IDEA plugin:
|
||||
@@ -40,6 +42,3 @@ class FakeK2NativeCompilerArguments : CommonCompilerArguments()
|
||||
|
||||
val IdePlatformKind<*>?.isKotlinNative
|
||||
get() = this is NativeIdePlatformKind
|
||||
|
||||
val IdePlatform<*, *>?.isKotlinNative
|
||||
get() = this is NativeIdePlatformKind.Platform
|
||||
|
||||
+1
-1
@@ -113,7 +113,7 @@ open class KotlinJavaModuleConfigurator protected constructor() : KotlinWithLibr
|
||||
try {
|
||||
val facet = module.getOrCreateFacet(modelsProvider, useProjectSettings = false, commitModel = true)
|
||||
val facetSettings = facet.configuration.settings
|
||||
facetSettings.initializeIfNeeded(module, null, JvmIdePlatformKind.Platform(JvmTarget.JVM_1_8))
|
||||
facetSettings.initializeIfNeeded(module, null, JvmPlatforms.jvm18)
|
||||
(facetSettings.compilerArguments as? K2JVMCompilerArguments)?.jvmTarget = "1.8"
|
||||
} finally {
|
||||
modelsProvider.dispose()
|
||||
|
||||
+6
-5
@@ -26,8 +26,9 @@ import com.intellij.openapi.roots.ui.configuration.libraries.AddCustomLibraryDia
|
||||
import com.intellij.openapi.roots.ui.configuration.libraries.CustomLibraryDescription
|
||||
import com.intellij.openapi.roots.ui.configuration.libraries.LibraryPresentationManager
|
||||
import org.jetbrains.kotlin.idea.platform.tooling
|
||||
import org.jetbrains.kotlin.platform.IdePlatform
|
||||
import org.jetbrains.kotlin.platform.IdePlatformKind
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.platform.idePlatformKind
|
||||
import org.jetbrains.kotlin.platform.impl.isCommon
|
||||
import javax.swing.JComponent
|
||||
|
||||
@@ -36,7 +37,7 @@ class FrameworkLibraryValidatorWithDynamicDescription(
|
||||
private val context: LibrariesValidatorContext,
|
||||
private val validatorsManager: FacetValidatorsManager,
|
||||
private val libraryCategoryName: String,
|
||||
private val getPlatform: () -> IdePlatform<*, *>
|
||||
private val getPlatform: () -> TargetPlatform
|
||||
) : FrameworkLibraryValidator() {
|
||||
private val IdePlatformKind<*>.libraryDescription: CustomLibraryDescription?
|
||||
get() = this.tooling.getLibraryDescription(context.module.project)
|
||||
@@ -70,10 +71,10 @@ class FrameworkLibraryValidatorWithDynamicDescription(
|
||||
override fun check(): ValidationResult {
|
||||
val targetPlatform = getPlatform()
|
||||
|
||||
if (checkLibraryIsConfigured(targetPlatform.kind)) {
|
||||
if (checkLibraryIsConfigured(targetPlatform.idePlatformKind)) {
|
||||
val conflictingPlatforms = IdePlatformKind.ALL_KINDS
|
||||
.filter {
|
||||
!it.isCommon && it.name != targetPlatform.kind.name
|
||||
!it.isCommon && it.name != targetPlatform.idePlatformKind.name
|
||||
&& it.libraryDescription != null && checkLibraryIsConfigured(it)
|
||||
}
|
||||
|
||||
@@ -87,7 +88,7 @@ class FrameworkLibraryValidatorWithDynamicDescription(
|
||||
|
||||
return ValidationResult(
|
||||
IdeBundle.message("label.missed.libraries.text", libraryCategoryName),
|
||||
LibrariesQuickFix(targetPlatform.kind.libraryDescription!!)
|
||||
LibrariesQuickFix(targetPlatform.idePlatformKind.libraryDescription!!)
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.idea.platform.IdePlatformKindTooling
|
||||
import org.jetbrains.kotlin.idea.platform.tooling
|
||||
import org.jetbrains.kotlin.idea.project.platform
|
||||
import org.jetbrains.kotlin.idea.util.module
|
||||
import org.jetbrains.kotlin.platform.idePlatformKind
|
||||
import org.jetbrains.kotlin.platform.impl.CommonIdePlatformKind
|
||||
import org.jetbrains.kotlin.platform.impl.isCommon
|
||||
import org.jetbrains.kotlin.psi.KtFunction
|
||||
@@ -62,7 +63,7 @@ object CommonIdePlatformKindTooling : IdePlatformKindTooling() {
|
||||
override fun acceptsAsEntryPoint(function: KtFunction): Boolean {
|
||||
val module = function.containingKtFile.module ?: return false
|
||||
return module.implementingModules.any { implementingModule ->
|
||||
implementingModule.platform?.kind?.takeIf { !it.isCommon }?.tooling?.acceptsAsEntryPoint(function) ?: false
|
||||
implementingModule.platform?.idePlatformKind?.takeIf { !it.isCommon }?.tooling?.acceptsAsEntryPoint(function) ?: false
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.findModuleDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||
import org.jetbrains.kotlin.idea.project.platform
|
||||
import org.jetbrains.kotlin.idea.util.module
|
||||
import org.jetbrains.kotlin.platform.impl.isCommon
|
||||
import org.jetbrains.kotlin.platform.isCommon
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.classId
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||
@@ -38,7 +38,7 @@ class KotlinMultiplatformJUnitRecognizer : JUnitRecognizer() {
|
||||
override fun isTestAnnotated(method: PsiMethod): Boolean {
|
||||
if (method !is KtLightMethod) return false
|
||||
val origin = method.kotlinOrigin ?: return false
|
||||
if (!origin.module?.platform.isCommon) return false
|
||||
if (!origin.module?.platform.isCommon()) return false
|
||||
|
||||
val moduleDescriptor = origin.containingKtFile.findModuleDescriptor()
|
||||
val implModules = moduleDescriptor.implementingDescriptors
|
||||
|
||||
@@ -7,10 +7,10 @@ package org.jetbrains.kotlin.idea.run
|
||||
|
||||
import com.intellij.openapi.module.Module
|
||||
import org.jetbrains.kotlin.idea.project.platform
|
||||
import org.jetbrains.kotlin.platform.impl.isJvm
|
||||
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||
|
||||
fun Module.asJvmModule(): Module? {
|
||||
if (platform.isJvm) return this
|
||||
if (platform.isJvm()) return this
|
||||
|
||||
return null
|
||||
}
|
||||
|
||||
@@ -45,12 +45,13 @@ import org.jetbrains.kotlin.idea.framework.KotlinSdkType
|
||||
import org.jetbrains.kotlin.idea.framework.detectLibraryKind
|
||||
import org.jetbrains.kotlin.idea.maven.configuration.KotlinMavenConfigurator
|
||||
import org.jetbrains.kotlin.idea.platform.tooling
|
||||
import org.jetbrains.kotlin.platform.IdePlatform
|
||||
import org.jetbrains.kotlin.platform.IdePlatformKind
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
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.isCommon
|
||||
import org.jetbrains.kotlin.platform.isCommon
|
||||
import org.jetbrains.kotlin.utils.SmartList
|
||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
import java.io.File
|
||||
@@ -179,7 +180,7 @@ class KotlinMavenImporter : MavenImporter(KOTLIN_PLUGIN_GROUP_ID, KOTLIN_PLUGIN_
|
||||
private fun getCompilerArgumentsByConfigurationElement(
|
||||
mavenProject: MavenProject,
|
||||
configuration: Element?,
|
||||
platform: IdePlatform<*, *>
|
||||
platform: TargetPlatform
|
||||
): List<String> {
|
||||
val arguments = platform.createArguments()
|
||||
|
||||
@@ -369,7 +370,7 @@ class KotlinMavenImporter : MavenImporter(KOTLIN_PLUGIN_GROUP_ID, KOTLIN_PLUGIN_
|
||||
}.distinct()
|
||||
|
||||
private fun setImplementedModuleName(kotlinFacet: KotlinFacet, mavenProject: MavenProject, module: Module) {
|
||||
if (kotlinFacet.configuration.settings.platform.isCommon) {
|
||||
if (kotlinFacet.configuration.settings.platform.isCommon()) {
|
||||
kotlinFacet.configuration.settings.implementedModuleNames = emptyList()
|
||||
} else {
|
||||
val manager = MavenProjectsManager.getInstance(module.project)
|
||||
|
||||
@@ -50,7 +50,11 @@ import org.jetbrains.kotlin.platform.impl.*
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners
|
||||
import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner
|
||||
import org.jetbrains.kotlin.platform.CommonPlatforms
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.platform.isCommon
|
||||
import org.jetbrains.kotlin.platform.js.isJs
|
||||
import org.jetbrains.kotlin.platform.oldFashionedDescription
|
||||
import org.jetbrains.kotlin.platform.js.JsPlatforms
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
import org.junit.Assert
|
||||
@@ -635,7 +639,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
Assert.assertFalse(compilerArguments!!.autoAdvanceApiVersion)
|
||||
Assert.assertEquals(true, compilerArguments!!.suppressWarnings)
|
||||
Assert.assertEquals(LanguageFeature.State.ENABLED, coroutineSupport)
|
||||
Assert.assertEquals("JVM 1.8", platform!!.description)
|
||||
Assert.assertEquals("JVM 1.8", platform!!.oldFashionedDescription)
|
||||
Assert.assertEquals("1.8", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
|
||||
Assert.assertEquals("foobar.jar", (compilerArguments as K2JVMCompilerArguments).classpath)
|
||||
Assert.assertEquals(
|
||||
@@ -756,7 +760,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
Assert.assertEquals("1.0", compilerArguments!!.languageVersion)
|
||||
Assert.assertEquals("1.0", apiLevel!!.versionString)
|
||||
Assert.assertEquals("1.0", compilerArguments!!.apiVersion)
|
||||
Assert.assertEquals("JVM 1.8", platform!!.description)
|
||||
Assert.assertEquals("JVM 1.8", platform!!.oldFashionedDescription)
|
||||
Assert.assertEquals("1.8", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
|
||||
}
|
||||
|
||||
@@ -831,7 +835,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
Assert.assertFalse(compilerArguments!!.autoAdvanceApiVersion)
|
||||
Assert.assertEquals(true, compilerArguments!!.suppressWarnings)
|
||||
Assert.assertEquals(LanguageFeature.State.ENABLED, coroutineSupport)
|
||||
Assert.assertTrue(platform.isJavaScript)
|
||||
Assert.assertTrue(platform.isJs())
|
||||
with(compilerArguments as K2JSCompilerArguments) {
|
||||
Assert.assertEquals(true, sourceMap)
|
||||
Assert.assertEquals("commonjs", moduleKind)
|
||||
@@ -986,7 +990,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
Assert.assertEquals("1.0", compilerArguments!!.apiVersion)
|
||||
Assert.assertEquals(true, compilerArguments!!.suppressWarnings)
|
||||
Assert.assertEquals(LanguageFeature.State.ENABLED, coroutineSupport)
|
||||
Assert.assertEquals("JVM 1.8", platform!!.description)
|
||||
Assert.assertEquals("JVM 1.8", platform!!.oldFashionedDescription)
|
||||
Assert.assertEquals("1.8", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
|
||||
Assert.assertEquals("foobar.jar", (compilerArguments as K2JVMCompilerArguments).classpath)
|
||||
Assert.assertEquals("-version", compilerSettings!!.additionalArguments)
|
||||
@@ -1046,7 +1050,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
assertImporterStatePresent()
|
||||
|
||||
with(facetSettings) {
|
||||
Assert.assertEquals("JVM 1.8", platform!!.description)
|
||||
Assert.assertEquals("JVM 1.8", platform!!.oldFashionedDescription)
|
||||
Assert.assertEquals("1.8", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
|
||||
Assert.assertEquals(LanguageFeature.State.ENABLED, coroutineSupport)
|
||||
Assert.assertEquals("c:/program files/jdk1.8", (compilerArguments as K2JVMCompilerArguments).classpath)
|
||||
@@ -1102,7 +1106,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
assertImporterStatePresent()
|
||||
|
||||
with(facetSettings) {
|
||||
Assert.assertEquals("JVM 1.8", platform!!.description)
|
||||
Assert.assertEquals("JVM 1.8", platform!!.oldFashionedDescription)
|
||||
Assert.assertEquals("1.8", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
|
||||
Assert.assertEquals(LanguageFeature.State.ENABLED, coroutineSupport)
|
||||
Assert.assertEquals("c:/program files/jdk1.8", (compilerArguments as K2JVMCompilerArguments).classpath)
|
||||
@@ -1156,7 +1160,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
assertModules("project")
|
||||
assertImporterStatePresent()
|
||||
|
||||
Assert.assertEquals(JvmIdePlatformKind.Platform(JvmTarget.JVM_1_6), facetSettings.platform)
|
||||
Assert.assertEquals(JvmPlatforms.jvm16, facetSettings.platform)
|
||||
|
||||
assertContentFolders("project", JavaSourceRootType.SOURCE, "src/main/kotlin")
|
||||
assertContentFolders("project", JavaSourceRootType.TEST_SOURCE, "src/test/java")
|
||||
@@ -1211,7 +1215,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
assertModules("project")
|
||||
assertImporterStatePresent()
|
||||
|
||||
Assert.assertEquals(JvmIdePlatformKind.Platform(JvmTarget.JVM_1_6), facetSettings.platform)
|
||||
Assert.assertEquals(JvmPlatforms.jvm16, facetSettings.platform)
|
||||
}
|
||||
|
||||
fun testJvmDetectionByGoalWithCommonStdlib() {
|
||||
@@ -1261,7 +1265,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
assertModules("project")
|
||||
assertImporterStatePresent()
|
||||
|
||||
Assert.assertEquals(JvmIdePlatformKind.Platform(JvmTarget.JVM_1_6), facetSettings.platform)
|
||||
Assert.assertEquals(JvmPlatforms.jvm16, facetSettings.platform)
|
||||
|
||||
assertContentFolders("project", JavaSourceRootType.SOURCE, "src/main/kotlin")
|
||||
assertContentFolders("project", JavaSourceRootType.TEST_SOURCE, "src/test/java")
|
||||
@@ -1316,7 +1320,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
assertModules("project")
|
||||
assertImporterStatePresent()
|
||||
|
||||
Assert.assertTrue(facetSettings.platform.isJavaScript)
|
||||
Assert.assertTrue(facetSettings.platform.isJs())
|
||||
|
||||
Assert.assertTrue(ModuleRootManager.getInstance(getModule("project")).sdk!!.sdkType is KotlinSdkType)
|
||||
|
||||
@@ -1373,7 +1377,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
assertModules("project")
|
||||
assertImporterStatePresent()
|
||||
|
||||
Assert.assertTrue(facetSettings.platform.isJavaScript)
|
||||
Assert.assertTrue(facetSettings.platform.isJs())
|
||||
|
||||
Assert.assertTrue(ModuleRootManager.getInstance(getModule("project")).sdk!!.sdkType is KotlinSdkType)
|
||||
|
||||
@@ -1430,7 +1434,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
assertModules("project")
|
||||
assertImporterStatePresent()
|
||||
|
||||
Assert.assertTrue(facetSettings.platform.isJavaScript)
|
||||
Assert.assertTrue(facetSettings.platform.isJs())
|
||||
|
||||
Assert.assertTrue(ModuleRootManager.getInstance(getModule("project")).sdk!!.sdkType is KotlinSdkType)
|
||||
|
||||
@@ -1492,7 +1496,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
assertModules("project")
|
||||
assertImporterStatePresent()
|
||||
|
||||
Assert.assertTrue(facetSettings.platform.isJavaScript)
|
||||
Assert.assertTrue(facetSettings.platform.isJs())
|
||||
|
||||
val rootManager = ModuleRootManager.getInstance(getModule("project"))
|
||||
val libraries = rootManager.orderEntries.filterIsInstance<LibraryOrderEntry>().map { it.library as LibraryEx }
|
||||
@@ -1546,7 +1550,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
assertModules("project")
|
||||
assertImporterStatePresent()
|
||||
|
||||
Assert.assertTrue(facetSettings.platform.isCommon)
|
||||
Assert.assertTrue(facetSettings.platform.isCommon())
|
||||
|
||||
Assert.assertTrue(ModuleRootManager.getInstance(getModule("project")).sdk!!.sdkType is KotlinSdkType)
|
||||
|
||||
@@ -1597,7 +1601,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
assertModules("project")
|
||||
assertImporterStatePresent()
|
||||
|
||||
Assert.assertTrue(facetSettings.platform.isCommon)
|
||||
Assert.assertTrue(facetSettings.platform.isCommon())
|
||||
|
||||
Assert.assertTrue(ModuleRootManager.getInstance(getModule("project")).sdk!!.sdkType is KotlinSdkType)
|
||||
|
||||
@@ -1648,7 +1652,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
assertModules("project")
|
||||
assertImporterStatePresent()
|
||||
|
||||
Assert.assertTrue(facetSettings.platform.isCommon)
|
||||
Assert.assertTrue(facetSettings.platform.isCommon())
|
||||
|
||||
val rootManager = ModuleRootManager.getInstance(getModule("project"))
|
||||
val stdlib = rootManager.orderEntries.filterIsInstance<LibraryOrderEntry>().single().library
|
||||
@@ -1709,7 +1713,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
assertModules("project")
|
||||
assertImporterStatePresent()
|
||||
|
||||
Assert.assertEquals(JvmIdePlatformKind.Platform(JvmTarget.JVM_1_6), facetSettings.platform)
|
||||
Assert.assertEquals(JvmPlatforms.jvm16, facetSettings.platform)
|
||||
|
||||
assertContentFolders("project", SourceKotlinRootType, "src/main/kotlin")
|
||||
assertContentFolders("project", TestSourceKotlinRootType, "src/test/java")
|
||||
@@ -1764,7 +1768,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
assertModules("project")
|
||||
assertImporterStatePresent()
|
||||
|
||||
Assert.assertTrue(facetSettings.platform.isJavaScript)
|
||||
Assert.assertTrue(facetSettings.platform.isJs())
|
||||
|
||||
assertContentFolders("project", SourceKotlinRootType, "src/main/kotlin")
|
||||
assertContentFolders("project", TestSourceKotlinRootType, "src/test/java")
|
||||
@@ -1819,7 +1823,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
assertModules("project")
|
||||
assertImporterStatePresent()
|
||||
|
||||
Assert.assertTrue(facetSettings.platform.isCommon)
|
||||
Assert.assertTrue(facetSettings.platform.isCommon())
|
||||
|
||||
assertContentFolders("project", SourceKotlinRootType, "src/main/kotlin")
|
||||
assertContentFolders("project", TestSourceKotlinRootType, "src/test/java")
|
||||
@@ -2033,7 +2037,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
assertImporterStatePresent()
|
||||
|
||||
with(facetSettings) {
|
||||
Assert.assertEquals("JVM 1.8", platform!!.description)
|
||||
Assert.assertEquals("JVM 1.8", platform!!.oldFashionedDescription)
|
||||
Assert.assertEquals("1.1", languageLevel!!.description)
|
||||
Assert.assertEquals("1.1", apiLevel!!.description)
|
||||
Assert.assertEquals("1.8", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
|
||||
@@ -2256,7 +2260,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
assertImporterStatePresent()
|
||||
|
||||
with(facetSettings("myModule1")) {
|
||||
Assert.assertEquals("JVM 1.8", platform!!.description)
|
||||
Assert.assertEquals("JVM 1.8", platform!!.oldFashionedDescription)
|
||||
Assert.assertEquals("1.1", languageLevel!!.description)
|
||||
Assert.assertEquals("1.0", apiLevel!!.description)
|
||||
Assert.assertEquals("1.8", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
|
||||
@@ -2267,7 +2271,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
}
|
||||
|
||||
with(facetSettings("myModule2")) {
|
||||
Assert.assertEquals("JVM 1.8", platform!!.description)
|
||||
Assert.assertEquals("JVM 1.8", platform!!.oldFashionedDescription)
|
||||
Assert.assertEquals("1.1", languageLevel!!.description)
|
||||
Assert.assertEquals("1.0", apiLevel!!.description)
|
||||
Assert.assertEquals("1.8", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
|
||||
@@ -2278,7 +2282,7 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
}
|
||||
|
||||
with(facetSettings("myModule3")) {
|
||||
Assert.assertEquals("JVM 1.8", platform!!.description)
|
||||
Assert.assertEquals("JVM 1.8", platform!!.oldFashionedDescription)
|
||||
Assert.assertEquals(LanguageVersion.LATEST_STABLE, languageLevel)
|
||||
Assert.assertEquals(LanguageVersion.LATEST_STABLE, apiLevel)
|
||||
Assert.assertEquals("1.8", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
|
||||
@@ -2517,20 +2521,20 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
assertImporterStatePresent()
|
||||
|
||||
with(facetSettings("my-common-module1")) {
|
||||
Assert.assertEquals(CommonIdePlatformKind.Platform.description, platform!!.description)
|
||||
Assert.assertEquals(CommonPlatforms.defaultCommonPlatform, platform)
|
||||
}
|
||||
|
||||
with(facetSettings("my-common-module2")) {
|
||||
Assert.assertEquals(CommonIdePlatformKind.Platform.description, platform!!.description)
|
||||
Assert.assertEquals(CommonPlatforms.defaultCommonPlatform, platform)
|
||||
}
|
||||
|
||||
with(facetSettings("my-jvm-module")) {
|
||||
Assert.assertEquals(JvmIdePlatformKind.Platform(JvmTarget.JVM_1_6).description, platform!!.description)
|
||||
Assert.assertEquals(JvmPlatforms.defaultJvmPlatform, platform)
|
||||
Assert.assertEquals(listOf("my-common-module1", "my-common-module2"), implementedModuleNames)
|
||||
}
|
||||
|
||||
with(facetSettings("my-js-module")) {
|
||||
Assert.assertEquals(JsIdePlatformKind.Platform.description, platform!!.description)
|
||||
Assert.assertEquals(JsPlatforms.defaultJsPlatform, platform)
|
||||
Assert.assertEquals(listOf("my-common-module1"), implementedModuleNames)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.platform.impl.NativeIdePlatformKind
|
||||
import org.jetbrains.kotlin.psi.KtFunction
|
||||
import org.jetbrains.kotlin.psi.KtNamedDeclaration
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.platform.konan.KonanPlatforms
|
||||
import javax.swing.Icon
|
||||
|
||||
class NativeIdePlatformKindTooling : IdePlatformKindTooling() {
|
||||
@@ -45,7 +46,7 @@ class NativeIdePlatformKindTooling : IdePlatformKindTooling() {
|
||||
|
||||
object NativeLibraryKind : PersistentLibraryKind<DummyLibraryProperties>("kotlin.native"), KotlinLibraryKind {
|
||||
override val compilerPlatform: TargetPlatform
|
||||
get() = NativeIdePlatformKind.compilerPlatform
|
||||
get() = KonanPlatforms.defaultKonanPlatform
|
||||
|
||||
override fun createDefaultProperties() = DummyLibraryProperties.INSTANCE!!
|
||||
}
|
||||
|
||||
@@ -16,15 +16,15 @@ import com.intellij.psi.search.GlobalSearchScope
|
||||
import com.intellij.psi.search.SearchScope
|
||||
import org.jetbrains.kotlin.idea.caches.project.implementingModules
|
||||
import org.jetbrains.kotlin.idea.project.platform
|
||||
import org.jetbrains.kotlin.platform.impl.isCommon
|
||||
import org.jetbrains.kotlin.platform.impl.isJvm
|
||||
import org.jetbrains.kotlin.platform.isCommon
|
||||
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||
|
||||
class CommonModuleResolveScopeEnlarger : ResolveScopeEnlarger() {
|
||||
override fun getAdditionalResolveScope(file: VirtualFile, project: Project): SearchScope? {
|
||||
val module = ProjectFileIndex.getInstance(project).getModuleForFile(file) ?: return null
|
||||
if (!module.platform.isCommon) return null
|
||||
if (!module.platform.isCommon()) return null
|
||||
|
||||
val implementingModule = module.implementingModules.find { it.platform.isJvm } ?: return null
|
||||
val implementingModule = module.implementingModules.find { it.platform.isJvm() } ?: return null
|
||||
|
||||
var result = GlobalSearchScope.EMPTY_SCOPE
|
||||
for (entry in ModuleRootManager.getInstance(implementingModule).orderEntries) {
|
||||
|
||||
+6
-3
@@ -43,11 +43,14 @@ import org.jetbrains.kotlin.idea.project.NewInferenceForIDEAnalysisComponent;
|
||||
import org.jetbrains.kotlin.idea.roots.RootUtilsKt;
|
||||
import org.jetbrains.kotlin.idea.util.CidrUtil;
|
||||
import org.jetbrains.kotlin.idea.util.application.ApplicationUtilsKt;
|
||||
import org.jetbrains.kotlin.platform.IdePlatform;
|
||||
import org.jetbrains.kotlin.platform.IdePlatformKind;
|
||||
import org.jetbrains.kotlin.platform.PlatformUtilKt;
|
||||
import org.jetbrains.kotlin.platform.impl.JsIdePlatformUtil;
|
||||
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind;
|
||||
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformUtil;
|
||||
import org.jetbrains.kotlin.config.JvmTarget;
|
||||
import org.jetbrains.kotlin.platform.jvm.JdkPlatform;
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.util.*;
|
||||
@@ -360,8 +363,8 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private void fillJvmVersionList() {
|
||||
for (IdePlatform<JvmIdePlatformKind, ?> jvm : JvmIdePlatformKind.INSTANCE.getPlatforms()) {
|
||||
jvmVersionComboBox.addItem(jvm.getVersion().getDescription());
|
||||
for (TargetPlatform jvm : JvmIdePlatformKind.INSTANCE.getPlatforms()) {
|
||||
jvmVersionComboBox.addItem(PlatformUtilKt.subplatformOfType(jvm, JdkPlatform.class).getTargetVersion().getDescription());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -25,14 +25,19 @@ import com.intellij.util.ui.FormBuilder
|
||||
import com.intellij.util.ui.ThreeStateCheckBox
|
||||
import org.jetbrains.kotlin.cli.common.arguments.*
|
||||
import org.jetbrains.kotlin.config.CompilerSettings
|
||||
import org.jetbrains.kotlin.config.createArguments
|
||||
import org.jetbrains.kotlin.config.splitArgumentString
|
||||
import org.jetbrains.kotlin.idea.compiler.configuration.*
|
||||
import org.jetbrains.kotlin.idea.util.onTextChange
|
||||
import org.jetbrains.kotlin.platform.IdePlatform
|
||||
import org.jetbrains.kotlin.platform.IdePlatformKind
|
||||
import org.jetbrains.kotlin.platform.idePlatformKind
|
||||
import org.jetbrains.kotlin.platform.impl.isCommon
|
||||
import org.jetbrains.kotlin.platform.impl.isJavaScript
|
||||
import org.jetbrains.kotlin.platform.impl.isJvm
|
||||
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 java.awt.BorderLayout
|
||||
import javax.swing.*
|
||||
import javax.swing.border.EmptyBorder
|
||||
@@ -60,7 +65,7 @@ class KotlinFacetEditorGeneralTab(
|
||||
|
||||
lateinit var useProjectSettingsCheckBox: ThreeStateCheckBox
|
||||
|
||||
lateinit var targetPlatformComboBox: ComboBox<IdePlatform<*, *>>
|
||||
lateinit var targetPlatformComboBox: ComboBox<TargetPlatform>
|
||||
|
||||
private lateinit var projectSettingsLink: HoverHyperlinkLabel
|
||||
|
||||
@@ -91,7 +96,7 @@ class KotlinFacetEditorGeneralTab(
|
||||
)
|
||||
|
||||
useProjectSettingsCheckBox = ThreeStateCheckBox("Use project settings").apply { isThirdStateEnabled = isMultiEditor }
|
||||
targetPlatformComboBox = ComboBox<IdePlatform<*, *>>(IdePlatformKind.All_PLATFORMS.toTypedArray()).apply {
|
||||
targetPlatformComboBox = ComboBox<TargetPlatform>(IdePlatformKind.All_PLATFORMS.toTypedArray()).apply {
|
||||
setRenderer(DescriptionListCellRenderer())
|
||||
}
|
||||
projectSettingsLink = HoverHyperlinkLabel("Edit project settings").apply {
|
||||
@@ -130,7 +135,7 @@ class KotlinFacetEditorGeneralTab(
|
||||
|
||||
internal fun updateCompilerConfigurable() {
|
||||
val useProjectSettings = useProjectSettingsCheckBox.isSelected
|
||||
compilerConfigurable.setTargetPlatform(chosenPlatform?.kind)
|
||||
compilerConfigurable.setTargetPlatform(chosenPlatform?.idePlatformKind)
|
||||
compilerConfigurable.setEnabled(!useProjectSettings)
|
||||
if (useProjectSettings) {
|
||||
compilerConfigurable.commonCompilerArguments = KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.unfrozen() as CommonCompilerArguments?
|
||||
@@ -147,14 +152,14 @@ class KotlinFacetEditorGeneralTab(
|
||||
compilerConfigurable.reset()
|
||||
}
|
||||
|
||||
val chosenPlatform: IdePlatform<*, *>?
|
||||
val chosenPlatform: TargetPlatform?
|
||||
get() = targetPlatformComboBox.selectedItemTyped
|
||||
}
|
||||
|
||||
inner class ArgumentConsistencyValidator : FacetEditorValidator() {
|
||||
override fun check(): ValidationResult {
|
||||
val platform = editor.chosenPlatform ?: return ValidationResult.OK
|
||||
val primaryArguments = platform.createArguments().apply {
|
||||
val primaryArguments = platform.createArguments {
|
||||
editor.compilerConfigurable.applyTo(
|
||||
this,
|
||||
this as? K2JVMCompilerArguments ?: K2JVMCompilerArguments(),
|
||||
@@ -169,9 +174,9 @@ class KotlinFacetEditorGeneralTab(
|
||||
}
|
||||
val emptyArguments = argumentClass.newInstance()
|
||||
val fieldNamesToCheck = when {
|
||||
platform.isJvm -> jvmUIExposedFields
|
||||
platform.isJavaScript -> jsUIExposedFields
|
||||
platform.isCommon -> metadataUIExposedFields
|
||||
platform.isJvm() -> jvmUIExposedFields
|
||||
platform.isJs() -> jsUIExposedFields
|
||||
platform.isCommon() -> metadataUIExposedFields
|
||||
else -> commonUIExposedFields
|
||||
}
|
||||
|
||||
@@ -306,8 +311,8 @@ class KotlinFacetEditorGeneralTab(
|
||||
editor.chosenPlatform?.let {
|
||||
if (it != platform) {
|
||||
val platformArguments = when {
|
||||
it.isJvm -> editor.compilerConfigurable.k2jvmCompilerArguments
|
||||
it.isJavaScript -> editor.compilerConfigurable.k2jsCompilerArguments
|
||||
it.isJvm() -> editor.compilerConfigurable.k2jvmCompilerArguments
|
||||
it.isJs() -> editor.compilerConfigurable.k2jsCompilerArguments
|
||||
else -> null
|
||||
}
|
||||
compilerArguments = it.createArguments {
|
||||
|
||||
@@ -40,19 +40,21 @@ import org.jetbrains.kotlin.idea.framework.KotlinSdkType
|
||||
import org.jetbrains.kotlin.idea.platform.tooling
|
||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||
import org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider
|
||||
import org.jetbrains.kotlin.platform.IdePlatform
|
||||
import org.jetbrains.kotlin.platform.IdePlatformKind
|
||||
import org.jetbrains.kotlin.platform.idePlatformKind
|
||||
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
|
||||
import org.jetbrains.kotlin.psi.NotNullableUserDataProperty
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
import kotlin.reflect.KProperty1
|
||||
|
||||
var Module.hasExternalSdkConfiguration: Boolean
|
||||
by NotNullableUserDataProperty(Key.create<Boolean>("HAS_EXTERNAL_SDK_CONFIGURATION"), false)
|
||||
|
||||
private fun getDefaultTargetPlatform(module: Module, rootModel: ModuleRootModel?): IdePlatform<*, *> {
|
||||
private fun getDefaultTargetPlatform(module: Module, rootModel: ModuleRootModel?): TargetPlatform {
|
||||
val platformKind = IdePlatformKind.ALL_KINDS.firstOrNull {
|
||||
getRuntimeLibraryVersions(module, rootModel, it).isNotEmpty()
|
||||
} ?: DefaultIdeTargetPlatformKindProvider.defaultPlatform.kind
|
||||
} ?: DefaultIdeTargetPlatformKindProvider.defaultPlatform.idePlatformKind
|
||||
if (platformKind == JvmIdePlatformKind) {
|
||||
var jvmTarget = Kotlin2JvmCompilerArgumentsHolder.getInstance(module.project).settings.jvmTarget?.let { JvmTarget.fromString(it) }
|
||||
if (jvmTarget == null) {
|
||||
@@ -62,7 +64,7 @@ private fun getDefaultTargetPlatform(module: Module, rootModel: ModuleRootModel?
|
||||
jvmTarget = JvmTarget.JVM_1_8
|
||||
}
|
||||
}
|
||||
return if (jvmTarget != null) JvmIdePlatformKind.Platform(jvmTarget) else JvmIdePlatformKind.defaultPlatform
|
||||
return if (jvmTarget != null) JvmPlatforms.jvmPlatformByTargetVersion(jvmTarget) else JvmPlatforms.defaultJvmPlatform
|
||||
}
|
||||
return platformKind.defaultPlatform
|
||||
}
|
||||
@@ -70,7 +72,7 @@ private fun getDefaultTargetPlatform(module: Module, rootModel: ModuleRootModel?
|
||||
fun KotlinFacetSettings.initializeIfNeeded(
|
||||
module: Module,
|
||||
rootModel: ModuleRootModel?,
|
||||
platform: IdePlatform<*, *>? = null, // if null, detect by module dependencies
|
||||
platform: TargetPlatform? = null, // if null, detect by module dependencies
|
||||
compilerVersion: String? = null
|
||||
) {
|
||||
val project = module.project
|
||||
@@ -87,7 +89,7 @@ fun KotlinFacetSettings.initializeIfNeeded(
|
||||
if (compilerArguments == null) {
|
||||
val targetPlatform = platform ?: getDefaultTargetPlatform(module, rootModel)
|
||||
compilerArguments = targetPlatform.createArguments {
|
||||
targetPlatform.kind.tooling.compilerArgumentsForProject(module.project)?.let { mergeBeans(it, this) }
|
||||
targetPlatform.idePlatformKind.tooling.compilerArgumentsForProject(module.project)?.let { mergeBeans(it, this) }
|
||||
mergeBeans(commonArguments, this)
|
||||
}
|
||||
}
|
||||
@@ -105,7 +107,7 @@ fun KotlinFacetSettings.initializeIfNeeded(
|
||||
getLibraryLanguageLevel(
|
||||
module,
|
||||
rootModel,
|
||||
this.platform?.kind,
|
||||
this.platform?.idePlatformKind,
|
||||
coerceRuntimeLibraryVersionToReleased = compilerVersion == null
|
||||
)
|
||||
)
|
||||
@@ -146,7 +148,7 @@ fun Module.getOrCreateFacet(
|
||||
fun KotlinFacet.configureFacet(
|
||||
compilerVersion: String?,
|
||||
coroutineSupport: LanguageFeature.State,
|
||||
platform: IdePlatform<*, *>?, // if null, detect by module dependencies
|
||||
platform: TargetPlatform?, // if null, detect by module dependencies
|
||||
modelsProvider: IdeModifiableModelsProvider
|
||||
) {
|
||||
val module = module
|
||||
|
||||
@@ -10,7 +10,8 @@ import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.startup.StartupActivity
|
||||
import org.jetbrains.kotlin.idea.project.platform
|
||||
import org.jetbrains.kotlin.idea.util.projectStructure.allModules
|
||||
import org.jetbrains.kotlin.platform.impl.isJvm
|
||||
import org.jetbrains.kotlin.platform.isCommon
|
||||
import org.jetbrains.kotlin.platform.js.isJs
|
||||
|
||||
/**
|
||||
* This StartupActivity creates KotlinSdk for projects containing non-jvm modules.
|
||||
@@ -21,7 +22,7 @@ class CreateKotlinSdkActivity : StartupActivity, DumbAware {
|
||||
|
||||
override fun runActivity(project: Project) {
|
||||
val kotlinSdkIsRequired = project.allModules().any {
|
||||
!it.platform.isJvm
|
||||
it.platform.isJs() || it.platform.isCommon()
|
||||
}
|
||||
if (kotlinSdkIsRequired) {
|
||||
KotlinSdkType.setUpIfNeeded()
|
||||
|
||||
@@ -13,21 +13,22 @@ import org.jetbrains.kotlin.idea.project.platform
|
||||
import org.jetbrains.kotlin.idea.statistics.FUSEventGroups
|
||||
import org.jetbrains.kotlin.idea.statistics.KotlinFUSLogger
|
||||
import org.jetbrains.kotlin.idea.util.projectStructure.allModules
|
||||
import org.jetbrains.kotlin.platform.impl.isCommon
|
||||
import org.jetbrains.kotlin.platform.impl.isJavaScript
|
||||
import org.jetbrains.kotlin.platform.impl.isJvm
|
||||
import org.jetbrains.kotlin.platform.impl.isKotlinNative
|
||||
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
|
||||
|
||||
class TargetRetrieveActivity : StartupActivity {
|
||||
|
||||
override fun runActivity(project: Project) {
|
||||
project.allModules().forEach {
|
||||
val buildSystem = it.getBuildSystemType()
|
||||
// TODO(dsavvinov): review that
|
||||
val platform = when {
|
||||
it.platform.isJvm -> "jvm"
|
||||
it.platform.isJavaScript -> "js"
|
||||
it.platform.isCommon -> "common"
|
||||
it.platform.isKotlinNative -> "native"
|
||||
it.platform.isJvm() -> "jvm"
|
||||
it.platform.isJs() -> "js"
|
||||
it.platform.isCommon() -> "common"
|
||||
it.platform.isNative() -> "native"
|
||||
else -> "unknown"
|
||||
}
|
||||
when {
|
||||
|
||||
@@ -35,7 +35,7 @@ import org.jetbrains.kotlin.idea.search.allScope
|
||||
import org.jetbrains.kotlin.idea.stubindex.KotlinClassShortNameIndex
|
||||
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
||||
import org.jetbrains.kotlin.idea.util.module
|
||||
import org.jetbrains.kotlin.platform.impl.isJvm
|
||||
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
import org.jetbrains.kotlin.psi.KtConstructor
|
||||
import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||
@@ -46,7 +46,7 @@ import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||
class KotlinTypeHierarchyProvider : JavaTypeHierarchyProvider() {
|
||||
private fun getOriginalPsiClassOrCreateLightClass(classOrObject: KtClassOrObject, module: Module?): PsiClass? {
|
||||
val fqName = classOrObject.fqName
|
||||
if (fqName != null && module?.platform.isJvm) {
|
||||
if (fqName != null && module?.platform.isJvm()) {
|
||||
val javaClassId = JavaToKotlinClassMap.mapKotlinToJava(fqName.toUnsafe())
|
||||
if (javaClassId != null) {
|
||||
return JavaPsiFacade.getInstance(classOrObject.project).findClass(
|
||||
|
||||
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.idea.isMainFunction
|
||||
import org.jetbrains.kotlin.idea.platform.tooling
|
||||
import org.jetbrains.kotlin.idea.project.platform
|
||||
import org.jetbrains.kotlin.idea.util.module
|
||||
import org.jetbrains.kotlin.platform.idePlatformKind
|
||||
import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||
|
||||
class KotlinRunLineMarkerContributor : RunLineMarkerContributor() {
|
||||
@@ -34,7 +35,7 @@ class KotlinRunLineMarkerContributor : RunLineMarkerContributor() {
|
||||
|
||||
if (function.isMainFunction()) {
|
||||
val platform = function.containingKtFile.module?.platform ?: return null
|
||||
if (!platform.kind.tooling.acceptsAsEntryPoint(function)) return null
|
||||
if (!platform.idePlatformKind.tooling.acceptsAsEntryPoint(function)) return null
|
||||
|
||||
return Info(AllIcons.RunConfigurations.TestState.Run, null, ExecutorAction.getActions(0))
|
||||
}
|
||||
|
||||
+2
-1
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||
import org.jetbrains.kotlin.idea.platform.tooling
|
||||
import org.jetbrains.kotlin.idea.project.platform
|
||||
import org.jetbrains.kotlin.idea.util.projectStructure.module
|
||||
import org.jetbrains.kotlin.platform.idePlatformKind
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
import org.jetbrains.kotlin.psi.KtNamedDeclaration
|
||||
import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||
@@ -62,7 +63,7 @@ class KotlinTestRunLineMarkerContributor : RunLineMarkerContributor() {
|
||||
val descriptor = declaration.resolveToDescriptorIfAny() ?: return null
|
||||
|
||||
val targetPlatform = declaration.module?.platform ?: return null
|
||||
val icon = targetPlatform.kind.tooling.getTestIcon(declaration, descriptor) ?: return null
|
||||
val icon = targetPlatform.idePlatformKind.tooling.getTestIcon(declaration, descriptor) ?: return null
|
||||
return Info(icon, { "Run Test" }, ExecutorAction.getActions())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ import org.jetbrains.jps.util.JpsPathUtil
|
||||
import org.jetbrains.kotlin.idea.facet.KotlinFacet
|
||||
import org.jetbrains.kotlin.idea.framework.isGradleModule
|
||||
import org.jetbrains.kotlin.idea.project.platform
|
||||
import org.jetbrains.kotlin.platform.impl.isJavaScript
|
||||
import org.jetbrains.kotlin.platform.js.isJs
|
||||
import org.jetbrains.plugins.gradle.settings.GradleSystemRunningSettings
|
||||
|
||||
val Module.jsTestOutputFilePath: String?
|
||||
@@ -47,7 +47,7 @@ val Module.jsProductionOutputFilePath: String?
|
||||
return JpsPathUtil.urlToPath("$outputDir/$name.js")
|
||||
}
|
||||
|
||||
fun Module.asJsModule(): Module? = takeIf { it.platform.isJavaScript }
|
||||
fun Module.asJsModule(): Module? = takeIf { it.platform.isJs() }
|
||||
|
||||
val Module.shouldUseJpsOutput: Boolean
|
||||
get() = !(isGradleModule() && GradleSystemRunningSettings.getInstance().isUseGradleAwareMake)
|
||||
@@ -300,7 +300,7 @@ private fun KotlinType.checkAccessibility(accessibleClasses: List<KtClassOrObjec
|
||||
return
|
||||
}
|
||||
val declaration = DescriptorToSourceUtils.descriptorToDeclaration(classifierDescriptor)
|
||||
if (declaration?.module?.platform?.kind?.isCommon == true) {
|
||||
if (declaration?.module?.platform?.isCommon() == true) {
|
||||
// Common classes are Ok again
|
||||
return
|
||||
}
|
||||
|
||||
@@ -44,6 +44,7 @@ import org.jetbrains.kotlin.platform.js.JsPlatforms
|
||||
import org.jetbrains.kotlin.platform.js.isJs
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||
import org.jetbrains.kotlin.platform.idePlatformKind
|
||||
import org.jetbrains.kotlin.utils.PathUtil
|
||||
|
||||
class KotlinNonJvmSourceRootConverterProvider : ConverterProvider("kotlin-non-jvm-source-roots") {
|
||||
@@ -141,7 +142,7 @@ class KotlinNonJvmSourceRootConverterProvider : ConverterProvider("kotlin-non-jv
|
||||
getFacetElement(KotlinFacetType.ID)
|
||||
?.getChild(JpsFacetSerializer.CONFIGURATION_TAG)
|
||||
?.getFacetPlatformByConfigurationElement()
|
||||
?.kind?.compilerPlatform
|
||||
|
||||
|
||||
private fun ModuleSettings.detectPlatformByDependencies(): TargetPlatform? {
|
||||
var hasCommonStdlib = false
|
||||
|
||||
@@ -34,8 +34,10 @@ import org.jetbrains.kotlin.idea.framework.LibraryEffectiveKindProviderKt;
|
||||
import org.jetbrains.kotlin.idea.project.PlatformKt;
|
||||
import org.jetbrains.kotlin.idea.util.Java9StructureUtilKt;
|
||||
import org.jetbrains.kotlin.idea.versions.KotlinRuntimeLibraryUtilKt;
|
||||
import org.jetbrains.kotlin.platform.impl.JsIdePlatformKind;
|
||||
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind;
|
||||
import org.jetbrains.kotlin.config.JvmTarget;
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform;
|
||||
import org.jetbrains.kotlin.platform.js.JsPlatforms;
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms;
|
||||
import org.jetbrains.kotlin.resolve.jvm.modules.JavaModuleKt;
|
||||
import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner;
|
||||
import org.jetbrains.kotlin.utils.PathUtil;
|
||||
@@ -206,7 +208,7 @@ public class ConfigureKotlinTest extends AbstractConfigureKotlinTest {
|
||||
assertEquals(false, settings.getUseProjectSettings());
|
||||
assertEquals("1.1", settings.getLanguageLevel().getDescription());
|
||||
assertEquals("1.0", settings.getApiLevel().getDescription());
|
||||
assertEquals(new JvmIdePlatformKind.Platform(JvmTarget.JVM_1_8), settings.getPlatform());
|
||||
assertEquals(JvmPlatforms.INSTANCE.getJvm18(), settings.getPlatform());
|
||||
assertEquals("1.1", arguments.getLanguageVersion());
|
||||
assertEquals("1.0", arguments.getApiVersion());
|
||||
assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, CoroutineSupport.byCompilerArguments(arguments));
|
||||
@@ -221,7 +223,7 @@ public class ConfigureKotlinTest extends AbstractConfigureKotlinTest {
|
||||
assertEquals(false, settings.getUseProjectSettings());
|
||||
assertEquals("1.1", settings.getLanguageLevel().getDescription());
|
||||
assertEquals("1.0", settings.getApiLevel().getDescription());
|
||||
assertEquals(JsIdePlatformKind.Platform.INSTANCE, settings.getPlatform());
|
||||
assertEquals(JsPlatforms.INSTANCE.getDefaultJsPlatform(), settings.getPlatform());
|
||||
assertEquals("1.1", arguments.getLanguageVersion());
|
||||
assertEquals("1.0", arguments.getApiVersion());
|
||||
assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, CoroutineSupport.byCompilerArguments(arguments));
|
||||
@@ -236,7 +238,7 @@ public class ConfigureKotlinTest extends AbstractConfigureKotlinTest {
|
||||
assertEquals(false, settings.getUseProjectSettings());
|
||||
assertEquals("1.1", settings.getLanguageLevel().getDescription());
|
||||
assertEquals("1.0", settings.getApiLevel().getDescription());
|
||||
assertEquals(new JvmIdePlatformKind.Platform(JvmTarget.JVM_1_8), settings.getPlatform());
|
||||
assertEquals(JvmPlatforms.INSTANCE.getJvm18(), settings.getPlatform());
|
||||
assertEquals("1.1", arguments.getLanguageVersion());
|
||||
assertEquals("1.0", arguments.getApiVersion());
|
||||
assertEquals(LanguageFeature.State.ENABLED, CoroutineSupport.byCompilerArguments(arguments));
|
||||
@@ -251,7 +253,7 @@ public class ConfigureKotlinTest extends AbstractConfigureKotlinTest {
|
||||
assertEquals(false, settings.getUseProjectSettings());
|
||||
assertEquals("1.1", settings.getLanguageLevel().getDescription());
|
||||
assertEquals("1.0", settings.getApiLevel().getDescription());
|
||||
assertEquals(JsIdePlatformKind.Platform.INSTANCE, settings.getPlatform());
|
||||
assertEquals(JsPlatforms.INSTANCE.getDefaultJsPlatform(), settings.getPlatform());
|
||||
assertEquals("1.1", arguments.getLanguageVersion());
|
||||
assertEquals("1.0", arguments.getApiVersion());
|
||||
assertEquals(LanguageFeature.State.ENABLED_WITH_ERROR, CoroutineSupport.byCompilerArguments(arguments));
|
||||
@@ -266,7 +268,7 @@ public class ConfigureKotlinTest extends AbstractConfigureKotlinTest {
|
||||
assertEquals(false, settings.getUseProjectSettings());
|
||||
assertEquals("1.1", settings.getLanguageLevel().getDescription());
|
||||
assertEquals("1.0", settings.getApiLevel().getDescription());
|
||||
assertEquals(new JvmIdePlatformKind.Platform(JvmTarget.JVM_1_8), settings.getPlatform());
|
||||
assertEquals(JvmPlatforms.INSTANCE.getJvm18(), settings.getPlatform());
|
||||
assertEquals("1.1", arguments.getLanguageVersion());
|
||||
assertEquals("1.0", arguments.getApiVersion());
|
||||
assertEquals(LanguageFeature.State.ENABLED, CoroutineSupport.byCompilerArguments(arguments));
|
||||
@@ -276,7 +278,7 @@ public class ConfigureKotlinTest extends AbstractConfigureKotlinTest {
|
||||
|
||||
public void testJvmProjectWithJvmTarget11() {
|
||||
KotlinFacetSettings settings = KotlinFacetSettingsProvider.Companion.getInstance(myProject).getInitializedSettings(getModule());
|
||||
assertEquals(new JvmIdePlatformKind.Platform(JvmTarget.JVM_11), settings.getPlatform());
|
||||
assertEquals(JvmPlatforms.INSTANCE.jvmPlatformByTargetVersion(JvmTarget.JVM_11), settings.getPlatform());
|
||||
}
|
||||
|
||||
public void testImplementsDependency() {
|
||||
@@ -342,7 +344,7 @@ public class ConfigureKotlinTest extends AbstractConfigureKotlinTest {
|
||||
IdeModifiableModelsProviderImpl modelsProvider = new IdeModifiableModelsProviderImpl(getProject());
|
||||
try {
|
||||
KotlinFacet facet = FacetUtilsKt.getOrCreateFacet(getModule(), modelsProvider, false, null, false);
|
||||
JvmIdePlatformKind.Platform platform = new JvmIdePlatformKind.Platform(jvmTarget);
|
||||
TargetPlatform platform = JvmPlatforms.INSTANCE.jvmPlatformByTargetVersion(jvmTarget);
|
||||
FacetUtilsKt.configureFacet(
|
||||
facet,
|
||||
"1.1",
|
||||
@@ -370,7 +372,7 @@ public class ConfigureKotlinTest extends AbstractConfigureKotlinTest {
|
||||
}
|
||||
|
||||
public void testProjectWithoutFacetWithJvmTarget18() {
|
||||
assertEquals(new JvmIdePlatformKind.Platform(JvmTarget.JVM_1_8), PlatformKt.getPlatform(getModule()));
|
||||
assertEquals(JvmPlatforms.INSTANCE.getJvm18(), PlatformKt.getPlatform(getModule()));
|
||||
}
|
||||
|
||||
private static class LibraryCountingRootPolicy extends RootPolicy<Integer> {
|
||||
|
||||
@@ -9,13 +9,12 @@ import com.intellij.openapi.module.Module
|
||||
import com.intellij.openapi.roots.ModifiableRootModel
|
||||
import com.intellij.testFramework.LightProjectDescriptor
|
||||
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime
|
||||
import org.jetbrains.kotlin.config.JvmTarget
|
||||
import org.jetbrains.kotlin.config.KotlinFacetSettingsProvider
|
||||
import org.jetbrains.kotlin.idea.stubs.createFacet
|
||||
import org.jetbrains.kotlin.idea.test.KotlinJdkAndLibraryProjectDescriptor
|
||||
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
|
||||
import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind
|
||||
import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
import org.jetbrains.kotlin.test.MockLibraryUtil
|
||||
import org.jetbrains.kotlin.utils.ReportLevel
|
||||
import org.junit.runner.RunWith
|
||||
@@ -35,7 +34,7 @@ class Jsr305HighlightingTest : KotlinLightCodeInsightFixtureTestCase() {
|
||||
) {
|
||||
override fun configureModule(module: Module, model: ModifiableRootModel) {
|
||||
super.configureModule(module, model)
|
||||
module.createFacet(JvmIdePlatformKind.Platform(JvmTarget.JVM_1_8))
|
||||
module.createFacet(JvmPlatforms.jvm18)
|
||||
val facetSettings = KotlinFacetSettingsProvider.getInstance(project).getInitializedSettings(module)
|
||||
|
||||
facetSettings.apply {
|
||||
|
||||
@@ -20,9 +20,12 @@ import org.jetbrains.kotlin.idea.stubs.AbstractMultiModuleTest
|
||||
import org.jetbrains.kotlin.idea.stubs.createFacet
|
||||
import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil
|
||||
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
||||
import org.jetbrains.kotlin.platform.IdePlatform
|
||||
import org.jetbrains.kotlin.platform.impl.*
|
||||
import org.jetbrains.kotlin.test.TestJdkKind
|
||||
import org.jetbrains.kotlin.platform.*
|
||||
import org.jetbrains.kotlin.platform.js.JsPlatforms
|
||||
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||
import org.jetbrains.kotlin.platform.js.isJs
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
import java.io.File
|
||||
|
||||
// allows to configure a test mpp project
|
||||
@@ -45,11 +48,11 @@ fun AbstractMultiModuleTest.setupMppProjectFromDirStructure(testRoot: File) {
|
||||
is ModuleDependency -> module.addDependency(modulesById[it.moduleId]!!)
|
||||
is StdlibDependency -> {
|
||||
when {
|
||||
platform.isCommon -> module.addLibrary(
|
||||
platform.isCommon() -> module.addLibrary(
|
||||
ForTestCompileRuntime.stdlibCommonForTests(), kind = CommonLibraryKind
|
||||
)
|
||||
platform.isJvm -> module.addLibrary(ForTestCompileRuntime.runtimeJarForTests())
|
||||
platform.isJavaScript -> module.addLibrary(ForTestCompileRuntime.stdlibJsForTests(), kind = JSLibraryKind)
|
||||
platform.isJvm() -> module.addLibrary(ForTestCompileRuntime.runtimeJarForTests())
|
||||
platform.isJs() -> module.addLibrary(ForTestCompileRuntime.stdlibJsForTests(), kind = JSLibraryKind)
|
||||
else -> error("Unknown platform $this")
|
||||
}
|
||||
}
|
||||
@@ -60,8 +63,8 @@ fun AbstractMultiModuleTest.setupMppProjectFromDirStructure(testRoot: File) {
|
||||
}
|
||||
is CoroutinesDependency -> module.enableCoroutines()
|
||||
is KotlinTestDependency -> when {
|
||||
platform.isJvm -> module.addLibrary(ForTestCompileRuntime.kotlinTestJUnitJarForTests())
|
||||
platform.isJavaScript -> module.addLibrary(ForTestCompileRuntime.kotlinTestJsJarForTests(), kind = JSLibraryKind)
|
||||
platform.isJvm() -> module.addLibrary(ForTestCompileRuntime.kotlinTestJUnitJarForTests())
|
||||
platform.isJs() -> module.addLibrary(ForTestCompileRuntime.kotlinTestJsJarForTests(), kind = JSLibraryKind)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -70,9 +73,9 @@ fun AbstractMultiModuleTest.setupMppProjectFromDirStructure(testRoot: File) {
|
||||
modulesById.forEach { (nameAndPlatform, module) ->
|
||||
val (name, platform) = nameAndPlatform
|
||||
when {
|
||||
platform.isCommon -> module.createFacet(platform, useProjectSettings = false)
|
||||
platform.isCommon() -> module.createFacet(platform, useProjectSettings = false)
|
||||
else -> {
|
||||
val commonModuleId = ModuleId(name, CommonIdePlatformKind.Platform)
|
||||
val commonModuleId = ModuleId(name, CommonPlatforms.defaultCommonPlatform)
|
||||
|
||||
module.createFacet(platform, implementedModuleName = commonModuleId.ideaModuleName())
|
||||
module.enableMultiPlatform()
|
||||
@@ -93,7 +96,7 @@ private fun AbstractMultiModuleTest.createModuleWithRoots(
|
||||
for ((_, isTestRoot, moduleRoot) in infos) {
|
||||
addRoot(module, moduleRoot, isTestRoot)
|
||||
|
||||
if (moduleId.platform.isJavaScript && isTestRoot) {
|
||||
if (moduleId.platform.isJs() && isTestRoot) {
|
||||
setupJsTestOutput(module)
|
||||
}
|
||||
}
|
||||
@@ -126,11 +129,11 @@ private fun AbstractMultiModuleTest.createModule(name: String): Module {
|
||||
|
||||
private val testSuffixes = setOf("test", "tests")
|
||||
private val platformNames = mapOf(
|
||||
listOf("header", "common", "expect") to CommonIdePlatformKind.Platform,
|
||||
listOf("java", "jvm") to JvmIdePlatformKind.defaultPlatform,
|
||||
listOf("java8", "jvm8") to JvmIdePlatformKind.Platform(JvmTarget.JVM_1_8),
|
||||
listOf("java6", "jvm6") to JvmIdePlatformKind.Platform(JvmTarget.JVM_1_6),
|
||||
listOf("js", "javascript") to JsIdePlatformKind.Platform
|
||||
listOf("header", "common", "expect") to CommonPlatforms.defaultCommonPlatform,
|
||||
listOf("java", "jvm") to JvmPlatforms.defaultJvmPlatform,
|
||||
listOf("java8", "jvm8") to JvmPlatforms.jvm18,
|
||||
listOf("java6", "jvm6") to JvmPlatforms.jvm16,
|
||||
listOf("js", "javascript") to JsPlatforms.defaultJsPlatform
|
||||
)
|
||||
|
||||
private fun parseDirName(dir: File): RootInfo {
|
||||
@@ -159,7 +162,7 @@ private fun parseModuleId(parts: List<String>): ModuleId {
|
||||
val platform = parsePlatform(parts)
|
||||
val name = parseModuleName(parts)
|
||||
val id = parseIndex(parts) ?: 0
|
||||
assert(id == 0 || !platform.isCommon)
|
||||
assert(id == 0 || !platform.isCommon())
|
||||
return ModuleId(name, platform, id)
|
||||
}
|
||||
|
||||
@@ -182,7 +185,7 @@ private fun parseIndex(parts: List<String>): Int? {
|
||||
|
||||
private data class ModuleId(
|
||||
val groupName: String,
|
||||
val platform: IdePlatform<*, *>,
|
||||
val platform: TargetPlatform,
|
||||
val index: Int = 0
|
||||
) {
|
||||
fun ideaModuleName(): String {
|
||||
@@ -191,11 +194,11 @@ private data class ModuleId(
|
||||
}
|
||||
}
|
||||
|
||||
private val IdePlatform<*, *>.presentableName: String
|
||||
private val TargetPlatform.presentableName: String
|
||||
get() = when {
|
||||
isCommon -> "Common"
|
||||
isJvm -> "JVM"
|
||||
isJavaScript -> "JS"
|
||||
isCommon() -> "Common"
|
||||
isJvm() -> "JVM"
|
||||
isJs() -> "JS"
|
||||
else -> error("Unknown platform $this")
|
||||
}
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.idea.facet.initializeIfNeeded
|
||||
import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil
|
||||
import org.jetbrains.kotlin.idea.test.KotlinJdkAndLibraryProjectDescriptor
|
||||
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
||||
import org.jetbrains.kotlin.platform.IdePlatform
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
import org.jetbrains.kotlin.test.TestJdkKind
|
||||
import org.junit.Assert
|
||||
@@ -131,7 +131,7 @@ abstract class AbstractMultiModuleTest : DaemonAnalyzerTestCase() {
|
||||
}
|
||||
|
||||
fun Module.createFacet(
|
||||
platformKind: IdePlatform<*, *>? = null,
|
||||
platformKind: TargetPlatform? = null,
|
||||
useProjectSettings: Boolean = true,
|
||||
implementedModuleName: String? = null
|
||||
) {
|
||||
|
||||
+2
-1
@@ -55,6 +55,7 @@ import org.jetbrains.kotlin.jps.incremental.*
|
||||
import org.jetbrains.kotlin.jps.model.JpsKotlinFacetModuleExtension
|
||||
import org.jetbrains.kotlin.jps.model.kotlinFacet
|
||||
import org.jetbrains.kotlin.jps.targets.KotlinModuleBuildTarget
|
||||
import org.jetbrains.kotlin.platform.idePlatformKind
|
||||
import org.jetbrains.kotlin.platform.impl.isJavaScript
|
||||
import org.jetbrains.kotlin.platform.impl.isJvm
|
||||
import org.jetbrains.kotlin.platform.orDefault
|
||||
@@ -468,7 +469,7 @@ abstract class AbstractIncrementalJpsTest(
|
||||
|
||||
private fun configureRequiredLibraries() {
|
||||
myProject.modules.forEach { module ->
|
||||
val platformKind = module.kotlinFacet?.settings?.platform?.kind.orDefault()
|
||||
val platformKind = module.kotlinFacet?.settings?.platform?.idePlatformKind.orDefault()
|
||||
|
||||
when {
|
||||
platformKind.isJvm -> {
|
||||
|
||||
+4
-2
@@ -18,6 +18,8 @@ import org.jetbrains.kotlin.jps.build.dependeciestxt.ModulesTxt.Dependency.Kind.
|
||||
import org.jetbrains.kotlin.platform.impl.FakeK2NativeCompilerArguments
|
||||
import org.jetbrains.kotlin.platform.impl.isCommon
|
||||
import org.jetbrains.kotlin.platform.impl.isJvm
|
||||
import org.jetbrains.kotlin.platform.isCommon
|
||||
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||
import java.io.File
|
||||
import kotlin.reflect.KMutableProperty1
|
||||
import kotlin.reflect.full.findAnnotation
|
||||
@@ -52,11 +54,11 @@ data class ModulesTxt(
|
||||
|
||||
val isCommonModule
|
||||
get() =
|
||||
kotlinFacetSettings?.platform.isCommon ||
|
||||
kotlinFacetSettings?.platform.isCommon() ||
|
||||
kotlinFacetSettings?.kind == SOURCE_SET_HOLDER
|
||||
|
||||
val isJvmModule
|
||||
get() = kotlinFacetSettings?.platform.isJvm
|
||||
get() = kotlinFacetSettings?.platform.isJvm()
|
||||
|
||||
val expectedBy
|
||||
get() = dependencies.filter {
|
||||
|
||||
@@ -11,12 +11,12 @@ import org.jetbrains.jps.model.java.JpsJavaExtensionService
|
||||
import org.jetbrains.jps.model.module.JpsModule
|
||||
import org.jetbrains.kotlin.cli.common.arguments.*
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.platform.IdePlatform
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
|
||||
val JpsModule.kotlinFacet: JpsKotlinFacetModuleExtension?
|
||||
get() = container.getChild(JpsKotlinFacetModuleExtension.KIND)
|
||||
|
||||
val JpsModule.platform: IdePlatform<*, *>?
|
||||
val JpsModule.platform: TargetPlatform?
|
||||
get() = kotlinFacet?.settings?.platform
|
||||
|
||||
val JpsModule.kotlinKind: KotlinModuleKind
|
||||
|
||||
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.jps.build.ModuleBuildTarget
|
||||
import org.jetbrains.kotlin.jps.model.platform
|
||||
import org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider
|
||||
import org.jetbrains.kotlin.platform.IdePlatformKind
|
||||
import org.jetbrains.kotlin.platform.idePlatformKind
|
||||
import org.jetbrains.kotlin.platform.impl.*
|
||||
import org.jetbrains.kotlin.utils.LibraryUtils
|
||||
import kotlin.system.measureTimeMillis
|
||||
@@ -134,7 +135,7 @@ internal class KotlinTargetsIndexBuilder internal constructor(
|
||||
|
||||
private fun ensureLoaded(target: ModuleBuildTarget): KotlinModuleBuildTarget<*> {
|
||||
return byJpsModuleBuildTarget.computeIfAbsent(target) {
|
||||
val platform = target.module.platform?.kind ?: detectTargetPlatform(target)
|
||||
val platform = target.module.platform?.idePlatformKind ?: detectTargetPlatform(target)
|
||||
|
||||
when {
|
||||
platform.isCommon -> KotlinCommonModuleBuildTarget(uninitializedContext, target)
|
||||
@@ -152,7 +153,7 @@ internal class KotlinTargetsIndexBuilder internal constructor(
|
||||
private fun detectTargetPlatform(target: ModuleBuildTarget): IdePlatformKind<*> {
|
||||
if (hasJsStdLib(target)) return JsIdePlatformKind
|
||||
|
||||
return DefaultIdeTargetPlatformKindProvider.defaultPlatform.kind
|
||||
return DefaultIdeTargetPlatformKindProvider.defaultPlatform.idePlatformKind
|
||||
}
|
||||
|
||||
private fun hasJsStdLib(target: ModuleBuildTarget): Boolean {
|
||||
|
||||
+2
-1
@@ -15,12 +15,13 @@ import org.jetbrains.kotlin.jps.build.KotlinCompileContext
|
||||
import org.jetbrains.kotlin.jps.build.KotlinDirtySourceFilesHolder
|
||||
import org.jetbrains.kotlin.jps.incremental.JpsIncrementalCache
|
||||
import org.jetbrains.kotlin.jps.model.platform
|
||||
import org.jetbrains.kotlin.platform.idePlatformKind
|
||||
|
||||
class KotlinUnsupportedModuleBuildTarget(
|
||||
kotlinContext: KotlinCompileContext,
|
||||
jpsModuleBuildTarget: ModuleBuildTarget
|
||||
) : KotlinModuleBuildTarget<BuildMetaInfo>(kotlinContext, jpsModuleBuildTarget) {
|
||||
val kind = module.platform?.kind?.name
|
||||
val kind = module.platform?.idePlatformKind?.name
|
||||
|
||||
private fun shouldNotBeCalled(): Nothing = error("Should not be called")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user