diff --git a/idea/src/org/jetbrains/jet/plugin/completion/KotlinLookupElementFactory.kt b/idea/src/org/jetbrains/jet/plugin/completion/KotlinLookupElementFactory.kt index 56b966b14c6..a4e475ebc76 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/KotlinLookupElementFactory.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/KotlinLookupElementFactory.kt @@ -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) } diff --git a/idea/testData/completion/basic/common/extensions/Extensions.kt b/idea/testData/completion/basic/common/extensions/Extensions.kt new file mode 100644 index 00000000000..fb4d4375e0b --- /dev/null +++ b/idea/testData/completion/basic/common/extensions/Extensions.kt @@ -0,0 +1,18 @@ +package a.b + +class Some { + fun foo() { + "". + } + + 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" } diff --git a/idea/tests/org/jetbrains/jet/completion/JSBasicCompletionTestGenerated.java b/idea/tests/org/jetbrains/jet/completion/JSBasicCompletionTestGenerated.java index d8bf8e69ea1..20db843e9da 100644 --- a/idea/tests/org/jetbrains/jet/completion/JSBasicCompletionTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/completion/JSBasicCompletionTestGenerated.java @@ -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"); diff --git a/idea/tests/org/jetbrains/jet/completion/JvmBasicCompletionTestGenerated.java b/idea/tests/org/jetbrains/jet/completion/JvmBasicCompletionTestGenerated.java index 1a23d9382ee..fa3c3093daa 100644 --- a/idea/tests/org/jetbrains/jet/completion/JvmBasicCompletionTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/completion/JvmBasicCompletionTestGenerated.java @@ -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");