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");