KT-11609 No named arguments completion should be after dot

#KT-11609 Fixed
This commit is contained in:
Valentin Kipyatkov
2016-03-25 18:24:36 +03:00
parent 471b673bdd
commit 9ebf94b4cf
6 changed files with 28 additions and 4 deletions
@@ -214,7 +214,7 @@ class BasicCompletionSession(
flushToResultSet()
NamedArgumentCompletion.complete(collector, expectedInfos)
NamedArgumentCompletion.complete(collector, expectedInfos, callTypeAndReceiver.callType)
flushToResultSet()
val contextVariablesProvider = RealContextVariablesProvider(referenceVariantsHelper, position)
@@ -436,7 +436,7 @@ class BasicCompletionSession(
get() = null
override fun doComplete() {
NamedArgumentCompletion.complete(collector, expectedInfos)
NamedArgumentCompletion.complete(collector, expectedInfos, callTypeAndReceiver.callType)
}
}
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.idea.KotlinIcons
import org.jetbrains.kotlin.idea.completion.handlers.WithTailInsertHandler
import org.jetbrains.kotlin.idea.core.ArgumentPositionData
import org.jetbrains.kotlin.idea.core.ExpectedInfo
import org.jetbrains.kotlin.idea.util.CallType
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtCallElement
import org.jetbrains.kotlin.psi.KtSimpleNameExpression
@@ -46,7 +47,9 @@ object NamedArgumentCompletion {
.any { it.isNamed() }
}
fun complete(collector: LookupElementsCollector, expectedInfos: Collection<ExpectedInfo>) {
fun complete(collector: LookupElementsCollector, expectedInfos: Collection<ExpectedInfo>, callType: CallType<*>) {
if (callType != CallType.DEFAULT) return
val nameToParameterType = HashMap<Name, MutableSet<KotlinType>>()
for (expectedInfo in expectedInfos) {
val argumentData = expectedInfo.additionalData as? ArgumentPositionData.Positional ?: continue
@@ -70,7 +70,7 @@ class SmartCompletionSession(
override fun doComplete() {
if (nameExpression != null && NamedArgumentCompletion.isOnlyNamedArgumentExpected(nameExpression)) {
NamedArgumentCompletion.complete(collector, expectedInfos)
NamedArgumentCompletion.complete(collector, expectedInfos, callTypeAndReceiver.callType)
return
}
@@ -0,0 +1,9 @@
fun foo(abcdef: Int) {
}
fun bar() {
foo("a".abcd<caret>)
}
// NOTHING_ELSE
@@ -1758,6 +1758,12 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes
doTest(fileName);
}
@TestMetadata("NotAfterDot.kt")
public void testNotAfterDot() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/NotAfterDot.kt");
doTest(fileName);
}
@TestMetadata("NotInBrackets.kt")
public void testNotInBrackets() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/NotInBrackets.kt");
@@ -1758,6 +1758,12 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT
doTest(fileName);
}
@TestMetadata("NotAfterDot.kt")
public void testNotAfterDot() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/NotAfterDot.kt");
doTest(fileName);
}
@TestMetadata("NotInBrackets.kt")
public void testNotInBrackets() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/NotInBrackets.kt");