From 1b3a1a662f5c150d88bd783c3f2bb68fb9d3f2f3 Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Mon, 13 Jul 2020 12:02:22 +0300 Subject: [PATCH] Add simple completion of class-like symbols --- .../primitiveCompletion/topLevelClasses.kt | 18 ++++++++++++++++++ .../test/JSBasicCompletionTestGenerated.java | 5 +++++ .../test/JvmBasicCompletionTestGenerated.java | 5 +++++ .../KotlinFirCompletionContributor.kt | 16 ++++++---------- 4 files changed, 34 insertions(+), 10 deletions(-) create mode 100644 idea/idea-completion/testData/basic/common/primitiveCompletion/topLevelClasses.kt diff --git a/idea/idea-completion/testData/basic/common/primitiveCompletion/topLevelClasses.kt b/idea/idea-completion/testData/basic/common/primitiveCompletion/topLevelClasses.kt new file mode 100644 index 00000000000..dffdf90b0a6 --- /dev/null +++ b/idea/idea-completion/testData/basic/common/primitiveCompletion/topLevelClasses.kt @@ -0,0 +1,18 @@ +class DefaultConstructor + +class TwoConstructors(s: String) { + constructor(l: Int): this(l.toString()) {} +} + +data class DataClass(val a: Int) + +abstract class AbstractClass + +fun usage() { + +} + +// EXIST: DefaultConstructor +// EXIST: TwoConstructors +// EXIST: DataClass +// EXIST: AbstractClass \ No newline at end of file diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java index 09e6920a107..0dacaf4cc65 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JSBasicCompletionTestGenerated.java @@ -2322,6 +2322,11 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes runTest("idea/idea-completion/testData/basic/common/primitiveCompletion/stringCompletion.kt"); } + @TestMetadata("topLevelClasses.kt") + public void testTopLevelClasses() throws Exception { + runTest("idea/idea-completion/testData/basic/common/primitiveCompletion/topLevelClasses.kt"); + } + @TestMetadata("topLevelVariablesAndFunctions.kt") public void testTopLevelVariablesAndFunctions() throws Exception { runTest("idea/idea-completion/testData/basic/common/primitiveCompletion/topLevelVariablesAndFunctions.kt"); diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java index 9864f663159..e4121862b82 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/JvmBasicCompletionTestGenerated.java @@ -2322,6 +2322,11 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT runTest("idea/idea-completion/testData/basic/common/primitiveCompletion/stringCompletion.kt"); } + @TestMetadata("topLevelClasses.kt") + public void testTopLevelClasses() throws Exception { + runTest("idea/idea-completion/testData/basic/common/primitiveCompletion/topLevelClasses.kt"); + } + @TestMetadata("topLevelVariablesAndFunctions.kt") public void testTopLevelVariablesAndFunctions() throws Exception { runTest("idea/idea-completion/testData/basic/common/primitiveCompletion/topLevelVariablesAndFunctions.kt"); diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/completion/KotlinFirCompletionContributor.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/completion/KotlinFirCompletionContributor.kt index 07c8aa8f4cc..61628a43eeb 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/completion/KotlinFirCompletionContributor.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/completion/KotlinFirCompletionContributor.kt @@ -10,10 +10,7 @@ import com.intellij.codeInsight.lookup.LookupElementBuilder import com.intellij.patterns.PlatformPatterns import com.intellij.util.ProcessingContext import org.jetbrains.kotlin.idea.frontend.api.getAnalysisSessionFor -import org.jetbrains.kotlin.idea.frontend.api.symbols.KtCallableSymbol -import org.jetbrains.kotlin.idea.frontend.api.symbols.KtNamedSymbol -import org.jetbrains.kotlin.idea.frontend.api.symbols.KtPossibleExtensionSymbol -import org.jetbrains.kotlin.idea.frontend.api.symbols.isExtension +import org.jetbrains.kotlin.idea.frontend.api.symbols.* import org.jetbrains.kotlin.idea.frontend.api.types.KtType import org.jetbrains.kotlin.idea.references.mainReference import org.jetbrains.kotlin.psi.KtFile @@ -45,7 +42,7 @@ private object KotlinHighLevelApiContributor : CompletionProvider): Boolean { val requiredReceiverType = (this as? KtPossibleExtensionSymbol)?.receiverType - ?: error("Extension receiver type should be present on ${this}") + ?: error("Extension receiver type should be present on $this") return implicitReceivers.any { it.isSubTypeOf(requiredReceiverType) } } \ No newline at end of file