This commit is contained in:
Valentin Kipyatkov
2015-06-16 17:34:30 +03:00
parent c91a359fea
commit e0f1bde20a
18 changed files with 74 additions and 74 deletions
@@ -264,7 +264,7 @@ class BasicCompletionSession(configuration: CompletionSessionConfiguration,
public enum class CompletionKind { public enum class CompletionKind {
KEYWORDS_ONLY, KEYWORDS_ONLY,
NAMED_PARAMETERS_ONLY, NAMED_ARGUMENTS_ONLY,
ALL, ALL,
TYPES, TYPES,
ANNOTATION_TYPES, ANNOTATION_TYPES,
@@ -283,13 +283,13 @@ class BasicCompletionSession(configuration: CompletionSessionConfiguration,
CompletionKind.ALL -> CompletionKind.ALL ->
DescriptorKindFilter(DescriptorKindFilter.ALL_KINDS_MASK) DescriptorKindFilter(DescriptorKindFilter.ALL_KINDS_MASK)
CompletionKind.NAMED_PARAMETERS_ONLY, CompletionKind.KEYWORDS_ONLY -> CompletionKind.NAMED_ARGUMENTS_ONLY, CompletionKind.KEYWORDS_ONLY ->
null null
} }
private fun calcCompletionKind(): CompletionKind { private fun calcCompletionKind(): CompletionKind {
if (NamedParametersCompletion.isOnlyNamedParameterExpected(position)) { if (NamedArgumentCompletion.isOnlyNamedArgumentExpected(position)) {
return CompletionKind.NAMED_PARAMETERS_ONLY return CompletionKind.NAMED_ARGUMENTS_ONLY
} }
if (reference == null) { if (reference == null) {
@@ -324,7 +324,7 @@ class BasicCompletionSession(configuration: CompletionSessionConfiguration,
override fun doComplete() { override fun doComplete() {
assert(parameters.getCompletionType() == CompletionType.BASIC) assert(parameters.getCompletionType() == CompletionType.BASIC)
if (completionKind != CompletionKind.NAMED_PARAMETERS_ONLY) { if (completionKind != CompletionKind.NAMED_ARGUMENTS_ONLY) {
collector.addDescriptorElements(referenceVariants, suppressAutoInsertion = false) collector.addDescriptorElements(referenceVariants, suppressAutoInsertion = false)
val keywordsPrefix = prefix.substringBefore('@') // if there is '@' in the prefix - use shorter prefix to not loose 'this' etc val keywordsPrefix = prefix.substringBefore('@') // if there is '@' in the prefix - use shorter prefix to not loose 'this' etc
@@ -374,7 +374,7 @@ class BasicCompletionSession(configuration: CompletionSessionConfiguration,
} }
} }
NamedParametersCompletion.complete(position, collector, bindingContext) NamedArgumentCompletion.complete(position, collector, bindingContext)
} }
private object NonAnnotationClassifierExclude : DescriptorKindExclude { private object NonAnnotationClassifierExclude : DescriptorKindExclude {
@@ -415,8 +415,8 @@ class SmartCompletionSession(configuration: CompletionSessionConfiguration, para
override val descriptorKindFilter: DescriptorKindFilter? = DescriptorKindFilter.VALUES exclude SamConstructorDescriptorKindExclude override val descriptorKindFilter: DescriptorKindFilter? = DescriptorKindFilter.VALUES exclude SamConstructorDescriptorKindExclude
override fun doComplete() { override fun doComplete() {
if (NamedParametersCompletion.isOnlyNamedParameterExpected(position)) { if (NamedArgumentCompletion.isOnlyNamedArgumentExpected(position)) {
NamedParametersCompletion.complete(position, collector, bindingContext) NamedArgumentCompletion.complete(position, collector, bindingContext)
return return
} }
@@ -45,7 +45,7 @@ import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.calls.callUtil.getCall import org.jetbrains.kotlin.resolve.calls.callUtil.getCall
import java.util.* import java.util.*
object NamedParametersCompletion { object NamedArgumentCompletion {
private val positionFilter = AndFilter( private val positionFilter = AndFilter(
LeafElementFilter(JetTokens.IDENTIFIER), LeafElementFilter(JetTokens.IDENTIFIER),
OrFilter( OrFilter(
@@ -57,7 +57,7 @@ object NamedParametersCompletion {
) )
) )
public fun isOnlyNamedParameterExpected(position: PsiElement): Boolean { public fun isOnlyNamedArgumentExpected(position: PsiElement): Boolean {
if (!positionFilter.isAcceptable(position, position)) return false if (!positionFilter.isAcceptable(position, position)) return false
val thisArgument = position.getStrictParentOfType<JetValueArgument>()!! val thisArgument = position.getStrictParentOfType<JetValueArgument>()!!
@@ -99,7 +99,7 @@ object NamedParametersCompletion {
.withPresentableText("$name =") .withPresentableText("$name =")
.withTailText(" ${DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(parameter.getType())}") .withTailText(" ${DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(parameter.getType())}")
.withIcon(JetIcons.PARAMETER) .withIcon(JetIcons.PARAMETER)
.withInsertHandler(NamedParameterInsertHandler(parameter.getName())) .withInsertHandler(NamedArgumentInsertHandler(parameter.getName()))
.assignPriority(ItemPriority.NAMED_PARAMETER) .assignPriority(ItemPriority.NAMED_PARAMETER)
collector.addElement(lookupElement) collector.addElement(lookupElement)
} }
@@ -107,7 +107,7 @@ object NamedParametersCompletion {
} }
} }
private class NamedParameterInsertHandler(val parameterName: Name) : InsertHandler<LookupElement> { private class NamedArgumentInsertHandler(val parameterName: Name) : InsertHandler<LookupElement> {
override fun handleInsert(context: InsertionContext, item: LookupElement) { override fun handleInsert(context: InsertionContext, item: LookupElement) {
val editor = context.getEditor() val editor = context.getEditor()
val text = parameterName.render() val text = parameterName.render()
@@ -1309,95 +1309,95 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes
} }
} }
@TestMetadata("idea/idea-completion/testData/basic/common/namedParameters") @TestMetadata("idea/idea-completion/testData/basic/common/namedArguments")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) @RunWith(JUnit3RunnerWithInners.class)
public static class NamedParameters extends AbstractJSBasicCompletionTest { public static class NamedArguments extends AbstractJSBasicCompletionTest {
@TestMetadata("AfterBrace.kt") @TestMetadata("AfterBrace.kt")
public void testAfterBrace() throws Exception { public void testAfterBrace() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/AfterBrace.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/AfterBrace.kt");
doTest(fileName); doTest(fileName);
} }
@TestMetadata("AfterComma.kt") @TestMetadata("AfterComma.kt")
public void testAfterComma() throws Exception { public void testAfterComma() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/AfterComma.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/AfterComma.kt");
doTest(fileName); doTest(fileName);
} }
@TestMetadata("AfterVararg.kt") @TestMetadata("AfterVararg.kt")
public void testAfterVararg() throws Exception { public void testAfterVararg() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/AfterVararg.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/AfterVararg.kt");
doTest(fileName); doTest(fileName);
} }
public void testAllFilesPresentInNamedParameters() throws Exception { public void testAllFilesPresentInNamedArguments() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/idea-completion/testData/basic/common/namedParameters"), Pattern.compile("^(.+)\\.kt$"), true); JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/idea-completion/testData/basic/common/namedArguments"), Pattern.compile("^(.+)\\.kt$"), true);
} }
@TestMetadata("CompactTypeNames.kt") @TestMetadata("CompactTypeNames.kt")
public void testCompactTypeNames() throws Exception { public void testCompactTypeNames() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/CompactTypeNames.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/CompactTypeNames.kt");
doTest(fileName); doTest(fileName);
} }
@TestMetadata("ForEmptyParametersFunction.kt") @TestMetadata("ForEmptyParametersFunction.kt")
public void testForEmptyParametersFunction() throws Exception { public void testForEmptyParametersFunction() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/ForEmptyParametersFunction.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/ForEmptyParametersFunction.kt");
doTest(fileName); doTest(fileName);
} }
@TestMetadata("InParameterExpression.kt") @TestMetadata("InParameterExpression.kt")
public void testInParameterExpression() throws Exception { public void testInParameterExpression() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/InParameterExpression.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/InParameterExpression.kt");
doTest(fileName); doTest(fileName);
} }
@TestMetadata("NamedParametersFromOverloads.kt") @TestMetadata("NamedArgumentsFromOverloads.kt")
public void testNamedParametersFromOverloads() throws Exception { public void testNamedArgumentsFromOverloads() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/NamedParametersFromOverloads.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/NamedArgumentsFromOverloads.kt");
doTest(fileName);
}
@TestMetadata("NamedParamsInConstructor.kt")
public void testNamedParamsInConstructor() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/NamedParamsInConstructor.kt");
doTest(fileName); doTest(fileName);
} }
@TestMetadata("NoAlreadyUsedParameters.kt") @TestMetadata("NoAlreadyUsedParameters.kt")
public void testNoAlreadyUsedParameters() throws Exception { public void testNoAlreadyUsedParameters() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/NoAlreadyUsedParameters.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/NoAlreadyUsedParameters.kt");
doTest(fileName); doTest(fileName);
} }
@TestMetadata("NoParamsFromUnapplicableOverload.kt") @TestMetadata("NoParamsFromUnapplicableOverload.kt")
public void testNoParamsFromUnapplicableOverload() throws Exception { public void testNoParamsFromUnapplicableOverload() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/NoParamsFromUnapplicableOverload.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/NoParamsFromUnapplicableOverload.kt");
doTest(fileName); doTest(fileName);
} }
@TestMetadata("NotOnlyNamedParameters.kt") @TestMetadata("NotOnlyNamedArguments.kt")
public void testNotOnlyNamedParameters() throws Exception { public void testNotOnlyNamedArguments() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/NotOnlyNamedParameters.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/NotOnlyNamedArguments.kt");
doTest(fileName); doTest(fileName);
} }
@TestMetadata("NotOnlyNamedParameters2.kt") @TestMetadata("NotOnlyNamedArguments2.kt")
public void testNotOnlyNamedParameters2() throws Exception { public void testNotOnlyNamedArguments2() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/NotOnlyNamedParameters2.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/NotOnlyNamedArguments2.kt");
doTest(fileName); doTest(fileName);
} }
@TestMetadata("OnlyNamedParameters.kt") @TestMetadata("OfConstructor.kt")
public void testOnlyNamedParameters() throws Exception { public void testOfConstructor() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/OnlyNamedParameters.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/OfConstructor.kt");
doTest(fileName);
}
@TestMetadata("OnlyNamedArguments.kt")
public void testOnlyNamedArguments() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/OnlyNamedArguments.kt");
doTest(fileName); doTest(fileName);
} }
@TestMetadata("WithParameterExpression.kt") @TestMetadata("WithParameterExpression.kt")
public void testWithParameterExpression() throws Exception { public void testWithParameterExpression() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/WithParameterExpression.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/WithParameterExpression.kt");
doTest(fileName); doTest(fileName);
} }
} }
@@ -1309,95 +1309,95 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT
} }
} }
@TestMetadata("idea/idea-completion/testData/basic/common/namedParameters") @TestMetadata("idea/idea-completion/testData/basic/common/namedArguments")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) @RunWith(JUnit3RunnerWithInners.class)
public static class NamedParameters extends AbstractJvmBasicCompletionTest { public static class NamedArguments extends AbstractJvmBasicCompletionTest {
@TestMetadata("AfterBrace.kt") @TestMetadata("AfterBrace.kt")
public void testAfterBrace() throws Exception { public void testAfterBrace() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/AfterBrace.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/AfterBrace.kt");
doTest(fileName); doTest(fileName);
} }
@TestMetadata("AfterComma.kt") @TestMetadata("AfterComma.kt")
public void testAfterComma() throws Exception { public void testAfterComma() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/AfterComma.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/AfterComma.kt");
doTest(fileName); doTest(fileName);
} }
@TestMetadata("AfterVararg.kt") @TestMetadata("AfterVararg.kt")
public void testAfterVararg() throws Exception { public void testAfterVararg() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/AfterVararg.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/AfterVararg.kt");
doTest(fileName); doTest(fileName);
} }
public void testAllFilesPresentInNamedParameters() throws Exception { public void testAllFilesPresentInNamedArguments() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/idea-completion/testData/basic/common/namedParameters"), Pattern.compile("^(.+)\\.kt$"), true); JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/idea-completion/testData/basic/common/namedArguments"), Pattern.compile("^(.+)\\.kt$"), true);
} }
@TestMetadata("CompactTypeNames.kt") @TestMetadata("CompactTypeNames.kt")
public void testCompactTypeNames() throws Exception { public void testCompactTypeNames() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/CompactTypeNames.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/CompactTypeNames.kt");
doTest(fileName); doTest(fileName);
} }
@TestMetadata("ForEmptyParametersFunction.kt") @TestMetadata("ForEmptyParametersFunction.kt")
public void testForEmptyParametersFunction() throws Exception { public void testForEmptyParametersFunction() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/ForEmptyParametersFunction.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/ForEmptyParametersFunction.kt");
doTest(fileName); doTest(fileName);
} }
@TestMetadata("InParameterExpression.kt") @TestMetadata("InParameterExpression.kt")
public void testInParameterExpression() throws Exception { public void testInParameterExpression() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/InParameterExpression.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/InParameterExpression.kt");
doTest(fileName); doTest(fileName);
} }
@TestMetadata("NamedParametersFromOverloads.kt") @TestMetadata("NamedArgumentsFromOverloads.kt")
public void testNamedParametersFromOverloads() throws Exception { public void testNamedArgumentsFromOverloads() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/NamedParametersFromOverloads.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/NamedArgumentsFromOverloads.kt");
doTest(fileName);
}
@TestMetadata("NamedParamsInConstructor.kt")
public void testNamedParamsInConstructor() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/NamedParamsInConstructor.kt");
doTest(fileName); doTest(fileName);
} }
@TestMetadata("NoAlreadyUsedParameters.kt") @TestMetadata("NoAlreadyUsedParameters.kt")
public void testNoAlreadyUsedParameters() throws Exception { public void testNoAlreadyUsedParameters() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/NoAlreadyUsedParameters.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/NoAlreadyUsedParameters.kt");
doTest(fileName); doTest(fileName);
} }
@TestMetadata("NoParamsFromUnapplicableOverload.kt") @TestMetadata("NoParamsFromUnapplicableOverload.kt")
public void testNoParamsFromUnapplicableOverload() throws Exception { public void testNoParamsFromUnapplicableOverload() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/NoParamsFromUnapplicableOverload.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/NoParamsFromUnapplicableOverload.kt");
doTest(fileName); doTest(fileName);
} }
@TestMetadata("NotOnlyNamedParameters.kt") @TestMetadata("NotOnlyNamedArguments.kt")
public void testNotOnlyNamedParameters() throws Exception { public void testNotOnlyNamedArguments() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/NotOnlyNamedParameters.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/NotOnlyNamedArguments.kt");
doTest(fileName); doTest(fileName);
} }
@TestMetadata("NotOnlyNamedParameters2.kt") @TestMetadata("NotOnlyNamedArguments2.kt")
public void testNotOnlyNamedParameters2() throws Exception { public void testNotOnlyNamedArguments2() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/NotOnlyNamedParameters2.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/NotOnlyNamedArguments2.kt");
doTest(fileName); doTest(fileName);
} }
@TestMetadata("OnlyNamedParameters.kt") @TestMetadata("OfConstructor.kt")
public void testOnlyNamedParameters() throws Exception { public void testOfConstructor() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/OnlyNamedParameters.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/OfConstructor.kt");
doTest(fileName);
}
@TestMetadata("OnlyNamedArguments.kt")
public void testOnlyNamedArguments() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/OnlyNamedArguments.kt");
doTest(fileName); doTest(fileName);
} }
@TestMetadata("WithParameterExpression.kt") @TestMetadata("WithParameterExpression.kt")
public void testWithParameterExpression() throws Exception { public void testWithParameterExpression() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedParameters/WithParameterExpression.kt"); String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/namedArguments/WithParameterExpression.kt");
doTest(fileName); doTest(fileName);
} }
} }