Completion: corrected presentation for extension properties

This commit is contained in:
Valentin Kipyatkov
2014-11-18 17:53:39 +03:00
parent 386c67925f
commit a26388ef63
4 changed files with 39 additions and 6 deletions
@@ -76,12 +76,6 @@ public object KotlinLookupElementFactory {
val returnType = descriptor.getReturnType()
element = element.withTypeText(if (returnType != null) DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(returnType) else "")
element = element.appendTailText(DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderFunctionParameters(descriptor), false)
if (descriptor.getExtensionReceiverParameter() != null) {
val tail = " for " + DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(descriptor.getExtensionReceiverParameter()!!.getType()) +
" in " + DescriptorUtils.getFqName(descriptor.getContainingDeclaration())
element = element.appendTailText(tail, true)
}
}
is VariableDescriptor -> {
@@ -97,6 +91,15 @@ public object KotlinLookupElementFactory {
}
}
if (descriptor is CallableDescriptor) {
val receiver = descriptor.getExtensionReceiverParameter()
if (receiver != null) {
val tail = " for " + DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(receiver.getType()) +
" in " + DescriptorUtils.getFqName(descriptor.getContainingDeclaration())
element = element.appendTailText(tail, true)
}
}
if (KotlinBuiltIns.getInstance().isDeprecated(descriptor)) {
element = element.withStrikeoutness(true)
}
@@ -0,0 +1,18 @@
package a.b
class Some {
fun foo() {
"".<caret>
}
fun String.memberExtFun() { }
val String.memberExtProp: Int get() = 1
}
fun String.extFun() { }
val String.extProp: Int get() = 1
// EXIST: { lookupString: "extFun", itemText: "extFun", tailText: "() for String in a.b", typeText: "Unit" }
// EXIST: { lookupString: "extProp", itemText: "extProp", tailText: " for String in a.b", typeText: "Int" }
// EXIST: { lookupString: "memberExtFun", itemText: "memberExtFun", tailText: "() for String in a.b.Some", typeText: "Unit" }
// EXIST: { lookupString: "memberExtProp", itemText: "memberExtProp", tailText: " for String in a.b.Some", typeText: "Int" }
@@ -816,6 +816,12 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes
doTest(fileName);
}
@TestMetadata("Extensions.kt")
public void testExtensions() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/extensions/Extensions.kt");
doTest(fileName);
}
@TestMetadata("InvalidTypeParameters.kt")
public void testInvalidTypeParameters() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/extensions/InvalidTypeParameters.kt");
@@ -816,6 +816,12 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT
doTest(fileName);
}
@TestMetadata("Extensions.kt")
public void testExtensions() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/extensions/Extensions.kt");
doTest(fileName);
}
@TestMetadata("InvalidTypeParameters.kt")
public void testInvalidTypeParameters() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/extensions/InvalidTypeParameters.kt");