diff --git a/idea/idea-completion/testData/basic/common/primitiveCompletion/noCompletionAfterNumberLiteral1.kt b/idea/idea-completion/testData/basic/common/primitiveCompletion/noCompletionAfterNumberLiteral1.kt new file mode 100644 index 00000000000..d0defd9c382 --- /dev/null +++ b/idea/idea-completion/testData/basic/common/primitiveCompletion/noCompletionAfterNumberLiteral1.kt @@ -0,0 +1,5 @@ +fun test() { + 3 +} + +// NOTHING_ELSE \ No newline at end of file diff --git a/idea/idea-completion/testData/basic/common/primitiveCompletion/noCompletionAfterNumberLiteral2.kt b/idea/idea-completion/testData/basic/common/primitiveCompletion/noCompletionAfterNumberLiteral2.kt new file mode 100644 index 00000000000..129e6b6accd --- /dev/null +++ b/idea/idea-completion/testData/basic/common/primitiveCompletion/noCompletionAfterNumberLiteral2.kt @@ -0,0 +1,6 @@ +fun test() { + 3. +} + +// INVOCATION_COUNT: 0 +// NOTHING_ELSE \ 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 0dacaf4cc65..fea699bbb3e 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 @@ -2307,6 +2307,16 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes runTest("idea/idea-completion/testData/basic/common/primitiveCompletion/localVariablesAndFunctionsFromNestedScope.kt"); } + @TestMetadata("noCompletionAfterNumberLiteral1.kt") + public void testNoCompletionAfterNumberLiteral1() throws Exception { + runTest("idea/idea-completion/testData/basic/common/primitiveCompletion/noCompletionAfterNumberLiteral1.kt"); + } + + @TestMetadata("noCompletionAfterNumberLiteral2.kt") + public void testNoCompletionAfterNumberLiteral2() throws Exception { + runTest("idea/idea-completion/testData/basic/common/primitiveCompletion/noCompletionAfterNumberLiteral2.kt"); + } + @TestMetadata("nullableCompletion.kt") public void testNullableCompletion() throws Exception { runTest("idea/idea-completion/testData/basic/common/primitiveCompletion/nullableCompletion.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 e4121862b82..6c1cb0c5074 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 @@ -2307,6 +2307,16 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT runTest("idea/idea-completion/testData/basic/common/primitiveCompletion/localVariablesAndFunctionsFromNestedScope.kt"); } + @TestMetadata("noCompletionAfterNumberLiteral1.kt") + public void testNoCompletionAfterNumberLiteral1() throws Exception { + runTest("idea/idea-completion/testData/basic/common/primitiveCompletion/noCompletionAfterNumberLiteral1.kt"); + } + + @TestMetadata("noCompletionAfterNumberLiteral2.kt") + public void testNoCompletionAfterNumberLiteral2() throws Exception { + runTest("idea/idea-completion/testData/basic/common/primitiveCompletion/noCompletionAfterNumberLiteral2.kt"); + } + @TestMetadata("nullableCompletion.kt") public void testNullableCompletion() throws Exception { runTest("idea/idea-completion/testData/basic/common/primitiveCompletion/nullableCompletion.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 be4bf4491d0..e1ed35c8f01 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 @@ -8,11 +8,13 @@ package org.jetbrains.kotlin.idea.completion import com.intellij.codeInsight.completion.* import com.intellij.codeInsight.lookup.LookupElementBuilder import com.intellij.patterns.PlatformPatterns +import com.intellij.patterns.PsiJavaPatterns import com.intellij.util.ProcessingContext import org.jetbrains.kotlin.idea.frontend.api.getAnalysisSessionFor 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.lexer.KtTokens import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtLabelReferenceExpression import org.jetbrains.kotlin.psi.KtSimpleNameExpression @@ -26,6 +28,8 @@ class KotlinFirCompletionContributor : CompletionContributor() { private object KotlinHighLevelApiContributor : CompletionProvider() { override fun addCompletions(parameters: CompletionParameters, context: ProcessingContext, result: CompletionResultSet) { + if (shouldSuppressCompletion(parameters, result.prefixMatcher)) return + val originalFile = parameters.originalFile as? KtFile ?: return val reference = (parameters.position.parent as? KtSimpleNameExpression)?.mainReference ?: return @@ -69,6 +73,29 @@ private object KotlinHighLevelApiContributor : CompletionProvider): Boolean {