From 776d198ea52fed52e297bc6bfd75632968407c74 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Fri, 19 Jun 2015 20:38:44 +0300 Subject: [PATCH] Disabled parameter name&type completion for annotation type constructor --- .../kotlin/idea/completion/CompletionSession.kt | 7 +++++-- .../NotForAnnnotationTypeConstructor.kt | 9 +++++++++ .../completion/test/JSBasicCompletionTestGenerated.java | 6 ++++++ .../completion/test/JvmBasicCompletionTestGenerated.java | 6 ++++++ 4 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 idea/idea-completion/testData/basic/common/parameterNameAndType/NotForAnnnotationTypeConstructor.kt 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 65a5bdd08d4..a89de06886c 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 @@ -334,8 +334,11 @@ class BasicCompletionSession(configuration: CompletionSessionConfiguration, when (completionKind) { CompletionKind.PARAMETER_NAME, CompletionKind.ANNOTATION_TYPES_OR_PARAMETER_NAME -> { val parameter = position.getNonStrictParentOfType()!! - val owner = parameter.getParent().getParent() - return parameter != (owner as? JetCatchClause)?.getCatchParameter() && parameter != (owner as? JetPropertyAccessor)?.getParameter() + val list = parameter.getParent() as? JetParameterList ?: return false + val owner = list.getParent() + return owner !is JetCatchClause && + owner !is JetPropertyAccessor && + !((owner as? JetPrimaryConstructor)?.getContainingClassOrObject()?.isAnnotation() ?: false) } else -> return false diff --git a/idea/idea-completion/testData/basic/common/parameterNameAndType/NotForAnnnotationTypeConstructor.kt b/idea/idea-completion/testData/basic/common/parameterNameAndType/NotForAnnnotationTypeConstructor.kt new file mode 100644 index 00000000000..193acda1e8b --- /dev/null +++ b/idea/idea-completion/testData/basic/common/parameterNameAndType/NotForAnnnotationTypeConstructor.kt @@ -0,0 +1,9 @@ +// we disabled parameter name/type completion because not all types are acceptable and it's not very useful in such context anyway + +class FooBar + +class Boo + +annotation class A(val b) + +// NUMBER: 0 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 8a0e6ccef00..aa659e3f549 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 @@ -1440,6 +1440,12 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes doTest(fileName); } + @TestMetadata("NotForAnnnotationTypeConstructor.kt") + public void testNotForAnnnotationTypeConstructor() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/parameterNameAndType/NotForAnnnotationTypeConstructor.kt"); + doTest(fileName); + } + @TestMetadata("NotForCatchParameter.kt") public void testNotForCatchParameter() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/parameterNameAndType/NotForCatchParameter.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 002d4d0f7a3..d8aa48e59e4 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 @@ -1440,6 +1440,12 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT doTest(fileName); } + @TestMetadata("NotForAnnnotationTypeConstructor.kt") + public void testNotForAnnnotationTypeConstructor() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/parameterNameAndType/NotForAnnnotationTypeConstructor.kt"); + doTest(fileName); + } + @TestMetadata("NotForCatchParameter.kt") public void testNotForCatchParameter() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/parameterNameAndType/NotForCatchParameter.kt");