From 22dc837e26ed80ca8920f7f89185560b4ec4b967 Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Mon, 20 Apr 2020 16:06:54 +0700 Subject: [PATCH] IDE. Allow expect declarations in completion in shared native modules Issue #KMM-218 --- .../org/jetbrains/kotlin/platform/TargetPlatform.kt | 10 +++++++++- .../kotlin/idea/completion/CompletionSession.kt | 4 ++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/core/descriptors/src/org/jetbrains/kotlin/platform/TargetPlatform.kt b/core/descriptors/src/org/jetbrains/kotlin/platform/TargetPlatform.kt index 01c33692dc6..36093dce35e 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/platform/TargetPlatform.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/platform/TargetPlatform.kt @@ -84,7 +84,15 @@ interface TargetPlatformVersion { } } -fun TargetPlatform?.isCommon(): Boolean = this != null && size > 1 && iterator().let { i -> +/** + * Whether this is a [TargetPlatform] that targets multiple [SimplePlatform]s. + */ +fun TargetPlatform?.isMultiPlatform(): Boolean = this != null && size > 1 + +/** + * Whether this is "Common" platform in its classical sense (MPP v1). + */ +fun TargetPlatform?.isCommon(): Boolean = isMultiPlatform() && this!!.iterator().let { i -> val firstPlatformName = i.next().platformName while (i.hasNext()) { if (i.next().platformName != firstPlatformName) return@let true diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionSession.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionSession.kt index 1db3cd760c6..82f98552d29 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionSession.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionSession.kt @@ -39,7 +39,7 @@ import org.jetbrains.kotlin.idea.imports.importableFqName import org.jetbrains.kotlin.idea.project.TargetPlatformDetector import org.jetbrains.kotlin.idea.references.mainReference import org.jetbrains.kotlin.idea.util.* -import org.jetbrains.kotlin.platform.isCommon +import org.jetbrains.kotlin.platform.isMultiPlatform import org.jetbrains.kotlin.platform.jvm.isJvm import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.resolve.BindingContext @@ -151,7 +151,7 @@ abstract class CompletionSession( { CompletionBenchmarkSink.instance.onFlush(this) }, prefixMatcher, parameters, resultSet, createSorter(), (file as? KtCodeFragment)?.extraCompletionFilter, - moduleDescriptor.platform.isCommon() + moduleDescriptor.platform.isMultiPlatform() ) }