Fixed EA-63622 - IAE: FqName.validateFqName
This commit is contained in:
@@ -30,7 +30,6 @@ import org.jetbrains.jet.plugin.completion.handlers.*
|
|||||||
import org.jetbrains.jet.renderer.DescriptorRenderer
|
import org.jetbrains.jet.renderer.DescriptorRenderer
|
||||||
import com.intellij.psi.PsiClass
|
import com.intellij.psi.PsiClass
|
||||||
import org.jetbrains.jet.asJava.KotlinLightClass
|
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.LookupElementDecorator
|
||||||
import com.intellij.codeInsight.lookup.LookupElementPresentation
|
import com.intellij.codeInsight.lookup.LookupElementPresentation
|
||||||
import org.jetbrains.jet.lang.types.JetType
|
import org.jetbrains.jet.lang.types.JetType
|
||||||
@@ -178,10 +177,15 @@ public class LookupElementFactory(
|
|||||||
if (descriptor is CallableDescriptor) {
|
if (descriptor is CallableDescriptor) {
|
||||||
if (descriptor.getExtensionReceiverParameter() != null) {
|
if (descriptor.getExtensionReceiverParameter() != null) {
|
||||||
val container = descriptor.getContainingDeclaration()
|
val container = descriptor.getContainingDeclaration()
|
||||||
val containerPresentation = if (container is ClassDescriptor)
|
val containerPresentation = if (container is ClassDescriptor) {
|
||||||
DescriptorUtils.getFqNameFromTopLevelClass(container)
|
if (container.getKind() != ClassKind.CLASS_OBJECT)
|
||||||
else
|
DescriptorUtils.getFqNameFromTopLevelClass(container).toString()
|
||||||
DescriptorUtils.getFqName(container)
|
else
|
||||||
|
"class object for " + DescriptorUtils.getFqNameFromTopLevelClass(container.getContainingDeclaration())
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
DescriptorUtils.getFqName(container).toString()
|
||||||
|
}
|
||||||
val originalReceiver = descriptor.getOriginal().getExtensionReceiverParameter()!!
|
val originalReceiver = descriptor.getOriginal().getExtensionReceiverParameter()!!
|
||||||
val receiverPresentation = DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(originalReceiver.getType())
|
val receiverPresentation = DescriptorRenderer.SHORT_NAMES_IN_TYPES.renderType(originalReceiver.getType())
|
||||||
element = element.appendTailText(" for $receiverPresentation in $containerPresentation", true)
|
element = element.appendTailText(" for $receiverPresentation in $containerPresentation", true)
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
package p
|
||||||
|
|
||||||
|
class B
|
||||||
|
|
||||||
|
class R {
|
||||||
|
class object {
|
||||||
|
fun B.f() {
|
||||||
|
this.<caret>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// EXIST: { itemText: "f", tailText: "() for B in class object for R" }
|
||||||
@@ -160,6 +160,12 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes
|
|||||||
doTest(fileName);
|
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")
|
@TestMetadata("ExtensionInsideFunction.kt")
|
||||||
public void testExtensionInsideFunction() throws Exception {
|
public void testExtensionInsideFunction() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/ExtensionInsideFunction.kt");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/ExtensionInsideFunction.kt");
|
||||||
|
|||||||
@@ -160,6 +160,12 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT
|
|||||||
doTest(fileName);
|
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")
|
@TestMetadata("ExtensionInsideFunction.kt")
|
||||||
public void testExtensionInsideFunction() throws Exception {
|
public void testExtensionInsideFunction() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/ExtensionInsideFunction.kt");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/ExtensionInsideFunction.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user