diff --git a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.java b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.java index b45186fbd18..beba91b086a 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.java +++ b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.java @@ -207,20 +207,9 @@ public class CompletionSession { PsiElement element = getPosition(); if (getPosition().getNode().getElementType() == JetTokens.IDENTIFIER) { if (element.getParent() instanceof JetSimpleNameExpression) { - JetSimpleNameExpression nameExpression = (JetSimpleNameExpression)element.getParent(); - - // Top level completion should be executed for simple name which is not in qualified expression - if (PsiTreeUtil.getParentOfType(nameExpression, JetQualifiedExpression.class) != null) { - return false; + if (!JetPsiUtil.isSelectorInQualified((JetSimpleNameExpression) element.getParent())) { + return true; } - - // Don't call top level completion in qualified named position of user type - PsiElement parent = nameExpression.getParent(); - if (parent instanceof JetUserType && ((JetUserType) parent).getQualifier() != null) { - return false; - } - - return true; } } diff --git a/idea/testData/completion/basic/common/TopLevelClassCompletionInQualifiedCall.kt b/idea/testData/completion/basic/common/TopLevelClassCompletionInQualifiedCall.kt new file mode 100644 index 00000000000..090ae01af10 --- /dev/null +++ b/idea/testData/completion/basic/common/TopLevelClassCompletionInQualifiedCall.kt @@ -0,0 +1,13 @@ +class Test { + fun foo(a: Collection) { + + } +} + +fun test() { + val t = Test() + t.foo(Array) +} + +// EXIST: ArrayList +// INVOCATION_COUNT: 2 \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/completion/JetBasicJSCompletionTestGenerated.java b/idea/tests/org/jetbrains/jet/completion/JetBasicJSCompletionTestGenerated.java index b0adf6cbd8c..65f650c25d4 100644 --- a/idea/tests/org/jetbrains/jet/completion/JetBasicJSCompletionTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/completion/JetBasicJSCompletionTestGenerated.java @@ -354,6 +354,11 @@ public class JetBasicJSCompletionTestGenerated extends AbstractJetJSCompletionTe doTest("idea/testData/completion/basic/common/SubpackageInFun.kt"); } + @TestMetadata("TopLevelClassCompletionInQualifiedCall.kt") + public void testTopLevelClassCompletionInQualifiedCall() throws Exception { + doTest("idea/testData/completion/basic/common/TopLevelClassCompletionInQualifiedCall.kt"); + } + @TestMetadata("VariableClassName.kt") public void testVariableClassName() throws Exception { doTest("idea/testData/completion/basic/common/VariableClassName.kt"); diff --git a/idea/tests/org/jetbrains/jet/completion/JetBasicJavaCompletionTestGenerated.java b/idea/tests/org/jetbrains/jet/completion/JetBasicJavaCompletionTestGenerated.java index 3aea26c832e..1db7bf202c0 100644 --- a/idea/tests/org/jetbrains/jet/completion/JetBasicJavaCompletionTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/completion/JetBasicJavaCompletionTestGenerated.java @@ -354,6 +354,11 @@ public class JetBasicJavaCompletionTestGenerated extends AbstractJavaCompletionT doTest("idea/testData/completion/basic/common/SubpackageInFun.kt"); } + @TestMetadata("TopLevelClassCompletionInQualifiedCall.kt") + public void testTopLevelClassCompletionInQualifiedCall() throws Exception { + doTest("idea/testData/completion/basic/common/TopLevelClassCompletionInQualifiedCall.kt"); + } + @TestMetadata("VariableClassName.kt") public void testVariableClassName() throws Exception { doTest("idea/testData/completion/basic/common/VariableClassName.kt");