diff --git a/core/descriptors/src/org/jetbrains/kotlin/platform/platformUtil.kt b/core/descriptors/src/org/jetbrains/kotlin/platform/platformUtil.kt index b9ad7f34f0f..509dc7743e0 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/platform/platformUtil.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/platform/platformUtil.kt @@ -5,11 +5,13 @@ package org.jetbrains.kotlin.platform -inline fun TargetPlatform.subplatformOfType(): T? = componentPlatforms.filterIsInstance().singleOrNull() -fun TargetPlatform.subplatformOfType(klass: Class): T? = componentPlatforms.filterIsInstance(klass).singleOrNull() +import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull -inline fun TargetPlatform?.has(): Boolean = this != null && subplatformOfType() != null -fun TargetPlatform?.has(klass: Class): Boolean = this != null && subplatformOfType(klass) != null +inline fun TargetPlatform.subplatformsOfType(): List = componentPlatforms.filterIsInstance() +fun TargetPlatform.subplatformsOfType(klass: Class): List = componentPlatforms.filterIsInstance(klass) + +inline fun TargetPlatform?.has(): Boolean = this != null && subplatformsOfType().isNotEmpty() +fun TargetPlatform?.has(klass: Class): Boolean = this != null && subplatformsOfType(klass).isNotEmpty() /** diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/caches/resolve/CompositeResolverForModuleFactory.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/caches/resolve/CompositeResolverForModuleFactory.kt index 2b0cdbda6f7..81776373dd9 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/caches/resolve/CompositeResolverForModuleFactory.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/caches/resolve/CompositeResolverForModuleFactory.kt @@ -81,7 +81,7 @@ class CompositeResolverForModuleFactory( val resolverForReferencedModule = referencedClassModule?.let { resolverForProject.tryGetResolverForModule(it as M) } val resolverForModule = resolverForReferencedModule?.takeIf { - referencedClassModule.platform.has() || referencedClassModule.platform == null + referencedClassModule.platform.has() } ?: run { // in case referenced class lies outside of our resolver, resolve the class as if it is inside our module // this leads to java class being resolved several times diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/compiler/IDELanguageSettingsProvider.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/compiler/IDELanguageSettingsProvider.kt index a8da37e51a0..5c398f1d76a 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/compiler/IDELanguageSettingsProvider.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/compiler/IDELanguageSettingsProvider.kt @@ -38,7 +38,7 @@ import org.jetbrains.kotlin.idea.project.languageVersionSettings import org.jetbrains.kotlin.idea.project.platform import org.jetbrains.kotlin.platform.TargetPlatformVersion import org.jetbrains.kotlin.platform.jvm.JdkPlatform -import org.jetbrains.kotlin.platform.subplatformOfType +import org.jetbrains.kotlin.platform.subplatformsOfType import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition import org.jetbrains.kotlin.utils.Jsr305State @@ -77,7 +77,7 @@ 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?.subplatformOfType())?.targetVersion + is ModuleSourceInfo -> moduleInfo.module.platform?.subplatformsOfType()?.firstOrNull()?.targetVersion ?: TargetPlatformVersion.NoVersion is ScriptModuleInfo -> getLanguageSettingsForScripts(project, moduleInfo.scriptDefinition).targetPlatformVersion is ScriptDependenciesInfo.ForFile -> getLanguageSettingsForScripts(project, moduleInfo.scriptDefinition).targetPlatformVersion diff --git a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java index f262a2a418d..b922d25e6ac 100644 --- a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java +++ b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java @@ -360,7 +360,7 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable { @SuppressWarnings("unchecked") private void fillJvmVersionList() { for (TargetPlatform jvm : JvmIdePlatformKind.INSTANCE.getPlatforms()) { - jvmVersionComboBox.addItem(PlatformUtilKt.subplatformOfType(jvm, JdkPlatform.class).getTargetVersion().getDescription()); + jvmVersionComboBox.addItem(PlatformUtilKt.subplatformsOfType(jvm, JdkPlatform.class).get(0).getTargetVersion().getDescription()); } } diff --git a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java.191 b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java.191 index 48ee892cd86..dadf430da8e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java.191 +++ b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java.191 @@ -362,7 +362,7 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable { @SuppressWarnings("unchecked") private void fillJvmVersionList() { for (TargetPlatform jvm : JvmIdePlatformKind.INSTANCE.getPlatforms()) { - jvmVersionComboBox.addItem(PlatformUtilKt.subplatformOfType(jvm, JdkPlatform.class).getTargetVersion().getDescription()); + jvmVersionComboBox.addItem(PlatformUtilKt.subplatformsOfType(jvm, JdkPlatform.class).get(0).getTargetVersion().getDescription()); } } diff --git a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java.192 b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java.192 index 623982ef608..aa561e58869 100644 --- a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java.192 +++ b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java.192 @@ -363,7 +363,7 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable { @SuppressWarnings("unchecked") private void fillJvmVersionList() { for (TargetPlatform jvm : JvmIdePlatformKind.INSTANCE.getPlatforms()) { - jvmVersionComboBox.addItem(PlatformUtilKt.subplatformOfType(jvm, JdkPlatform.class).getTargetVersion().getDescription()); + jvmVersionComboBox.addItem(PlatformUtilKt.subplatformsOfType(jvm, JdkPlatform.class).get(0).getTargetVersion().getDescription()); } }