From 0809be59df84d4e456985e6321445b86eca99347 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Thu, 11 Feb 2016 18:49:15 +0300 Subject: [PATCH] KT-10619 Wrong completion after package name in annotation #KT-10619 Fixed --- .../idea/completion/BasicCompletionSession.kt | 24 ++++++++++--------- .../common/annotations/AfterPackageName.kt | 5 ++++ .../test/JSBasicCompletionTestGenerated.java | 6 +++++ .../test/JvmBasicCompletionTestGenerated.java | 6 +++++ 4 files changed, 30 insertions(+), 11 deletions(-) create mode 100644 idea/idea-completion/testData/basic/common/annotations/AfterPackageName.kt diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicCompletionSession.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicCompletionSession.kt index 3bf9c3140f5..70ccecaba3e 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicCompletionSession.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/BasicCompletionSession.kt @@ -272,18 +272,20 @@ class BasicCompletionSession( } } - val classKindFilter: ((ClassKind) -> Boolean)? - when (callTypeAndReceiver) { - is CallTypeAndReceiver.ANNOTATION -> classKindFilter = { it == ClassKind.ANNOTATION_CLASS } - is CallTypeAndReceiver.DEFAULT, is CallTypeAndReceiver.TYPE -> classKindFilter = { it != ClassKind.ENUM_ENTRY } - else -> classKindFilter = null - } - if (classKindFilter != null) { - if (configuration.completeNonImportedClasses) { - addClassesFromIndex(classKindFilter) + if (callTypeAndReceiver.receiver == null) { + val classKindFilter: ((ClassKind) -> Boolean)? + when (callTypeAndReceiver) { + is CallTypeAndReceiver.ANNOTATION -> classKindFilter = { it == ClassKind.ANNOTATION_CLASS } + is CallTypeAndReceiver.DEFAULT, is CallTypeAndReceiver.TYPE -> classKindFilter = { it != ClassKind.ENUM_ENTRY } + else -> classKindFilter = null } - else { - collector.advertiseSecondCompletion() + if (classKindFilter != null) { + if (configuration.completeNonImportedClasses) { + addClassesFromIndex(classKindFilter) + } + else { + collector.advertiseSecondCompletion() + } } } } diff --git a/idea/idea-completion/testData/basic/common/annotations/AfterPackageName.kt b/idea/idea-completion/testData/basic/common/annotations/AfterPackageName.kt new file mode 100644 index 00000000000..304b02cee41 --- /dev/null +++ b/idea/idea-completion/testData/basic/common/annotations/AfterPackageName.kt @@ -0,0 +1,5 @@ +@kotlin.concurrent. + +// INVOCATION_COUNT: 2 +// ABSENT: Deprecated +// ABSENT: Volatile 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 d5abf908b3e..c19137ecc18 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 @@ -791,6 +791,12 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) public static class Annotations extends AbstractJSBasicCompletionTest { + @TestMetadata("AfterPackageName.kt") + public void testAfterPackageName() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/annotations/AfterPackageName.kt"); + doTest(fileName); + } + public void testAllFilesPresentInAnnotations() throws Exception { KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/idea-completion/testData/basic/common/annotations"), Pattern.compile("^(.+)\\.kt$"), true); } 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 2d7d29a54e1..98e21385fdb 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 @@ -791,6 +791,12 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class) public static class Annotations extends AbstractJvmBasicCompletionTest { + @TestMetadata("AfterPackageName.kt") + public void testAfterPackageName() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/annotations/AfterPackageName.kt"); + doTest(fileName); + } + public void testAllFilesPresentInAnnotations() throws Exception { KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/idea-completion/testData/basic/common/annotations"), Pattern.compile("^(.+)\\.kt$"), true); }