diff --git a/idea/src/org/jetbrains/jet/plugin/completion/LookupElementFactory.kt b/idea/src/org/jetbrains/jet/plugin/completion/LookupElementFactory.kt index 0ec20221ff5..cc4cdce48ca 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/LookupElementFactory.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/LookupElementFactory.kt @@ -30,7 +30,6 @@ import org.jetbrains.jet.plugin.completion.handlers.* import org.jetbrains.jet.renderer.DescriptorRenderer import com.intellij.psi.PsiClass import org.jetbrains.jet.asJava.KotlinLightClass -import org.jetbrains.jet.lang.resolve.java.JavaResolverUtils import com.intellij.codeInsight.lookup.LookupElementDecorator import com.intellij.codeInsight.lookup.LookupElementPresentation import org.jetbrains.jet.lang.types.JetType @@ -178,10 +177,15 @@ public class LookupElementFactory( if (descriptor is CallableDescriptor) { if (descriptor.getExtensionReceiverParameter() != null) { val container = descriptor.getContainingDeclaration() - val containerPresentation = if (container is ClassDescriptor) - DescriptorUtils.getFqNameFromTopLevelClass(container) - else - DescriptorUtils.getFqName(container) + val containerPresentation = if (container is ClassDescriptor) { + if (container.getKind() != ClassKind.CLASS_OBJECT) + DescriptorUtils.getFqNameFromTopLevelClass(container).toString() + else + "class object for " + DescriptorUtils.getFqNameFromTopLevelClass(container.getContainingDeclaration()) + } + else { + DescriptorUtils.getFqName(container).toString() + } val originalReceiver = descriptor.getOriginal().getExtensionReceiverParameter()!! val receiverPresentation = DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(originalReceiver.getType()) element = element.appendTailText(" for $receiverPresentation in $containerPresentation", true) diff --git a/idea/testData/completion/basic/common/ExtensionFunctionInClassObject.kt b/idea/testData/completion/basic/common/ExtensionFunctionInClassObject.kt new file mode 100644 index 00000000000..dc15097c42d --- /dev/null +++ b/idea/testData/completion/basic/common/ExtensionFunctionInClassObject.kt @@ -0,0 +1,13 @@ +package p + +class B + +class R { + class object { + fun B.f() { + this. + } + } +} + +// EXIST: { itemText: "f", tailText: "() for B in class object for R" } diff --git a/idea/tests/org/jetbrains/jet/completion/JSBasicCompletionTestGenerated.java b/idea/tests/org/jetbrains/jet/completion/JSBasicCompletionTestGenerated.java index bf7ca9fe348..fa461f4cf3a 100644 --- a/idea/tests/org/jetbrains/jet/completion/JSBasicCompletionTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/completion/JSBasicCompletionTestGenerated.java @@ -160,6 +160,12 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes doTest(fileName); } + @TestMetadata("ExtensionFunctionInClassObject.kt") + public void testExtensionFunctionInClassObject() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/ExtensionFunctionInClassObject.kt"); + doTest(fileName); + } + @TestMetadata("ExtensionInsideFunction.kt") public void testExtensionInsideFunction() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/ExtensionInsideFunction.kt"); diff --git a/idea/tests/org/jetbrains/jet/completion/JvmBasicCompletionTestGenerated.java b/idea/tests/org/jetbrains/jet/completion/JvmBasicCompletionTestGenerated.java index 07c37bb9df9..d6556e279c5 100644 --- a/idea/tests/org/jetbrains/jet/completion/JvmBasicCompletionTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/completion/JvmBasicCompletionTestGenerated.java @@ -160,6 +160,12 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT doTest(fileName); } + @TestMetadata("ExtensionFunctionInClassObject.kt") + public void testExtensionFunctionInClassObject() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/ExtensionFunctionInClassObject.kt"); + doTest(fileName); + } + @TestMetadata("ExtensionInsideFunction.kt") public void testExtensionInsideFunction() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/ExtensionInsideFunction.kt");