diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/ExpectedInfos.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/ExpectedInfos.kt index ac92264b31b..a407159982a 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/ExpectedInfos.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/ExpectedInfos.kt @@ -311,12 +311,14 @@ class ExpectedInfos( val isFunctionLiteralArgument = argument is FunctionLiteralArgument val callType = call.callType + val isArrayAccess = callType == Call.CallType.ARRAY_GET_METHOD || callType == Call.CallType.ARRAY_SET_METHOD + val rparenthTail = if (isArrayAccess) Tail.RBRACKET else Tail.RPARENTH val argumentPositionData = if (argumentName != null) { ArgumentPositionData.Named(descriptor, callType, argumentName) } else { - val namedArgumentCandidates = if (!isFunctionLiteralArgument && descriptor.hasStableParameterNames()) { + val namedArgumentCandidates = if (!isFunctionLiteralArgument && !isArrayAccess && descriptor.hasStableParameterNames()) { val usedParameters = argumentToParameter.filter { it.key != argument }.map { it.value }.toSet() descriptor.valueParameters.filter { it !in usedParameters } } @@ -326,9 +328,6 @@ class ExpectedInfos( ArgumentPositionData.Positional(descriptor, callType, argumentIndex, isFunctionLiteralArgument, namedArgumentCandidates) } - val isArrayAccess = callType == Call.CallType.ARRAY_GET_METHOD || callType == Call.CallType.ARRAY_SET_METHOD - val rparenthTail = if (isArrayAccess) Tail.RBRACKET else Tail.RPARENTH - var parameters = descriptor.valueParameters if (callType == Call.CallType.ARRAY_SET_METHOD) { // last parameter in set is used for value assigned if (parameter == parameters.last()) { diff --git a/idea/idea-completion/testData/basic/common/namedArguments/NotInBrackets.kt b/idea/idea-completion/testData/basic/common/namedArguments/NotInBrackets.kt new file mode 100644 index 00000000000..8ecd34206e3 --- /dev/null +++ b/idea/idea-completion/testData/basic/common/namedArguments/NotInBrackets.kt @@ -0,0 +1,8 @@ +operator fun String.get(p1: Int, p2: Int): Int = 0 + +fun bar() { + ""[] +} + +// ABSENT: p1 +// ABSENT: p2 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 01b782d95ee..d108d38410f 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 @@ -1503,6 +1503,12 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes doTest(fileName); } + @TestMetadata("NotInBrackets.kt") + public void testNotInBrackets() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/NotInBrackets.kt"); + doTest(fileName); + } + @TestMetadata("NotInElse.kt") public void testNotInElse() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/NotInElse.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 e018bbcf8f7..6920f2ea690 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 @@ -1503,6 +1503,12 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT doTest(fileName); } + @TestMetadata("NotInBrackets.kt") + public void testNotInBrackets() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/NotInBrackets.kt"); + doTest(fileName); + } + @TestMetadata("NotInElse.kt") public void testNotInElse() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/NotInElse.kt");