diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCharFilter.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCharFilter.java index d513b80f588b..9b45d139d5ff 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaCharFilter.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaCharFilter.java @@ -42,7 +42,7 @@ public class JavaCharFilter extends CharFilter { return psiElement != null && psiElement.getParent() instanceof PsiLiteralExpression; } - public static boolean isNonImportedClassEntered(LookupImpl lookup) { + public static boolean isNonImportedClassEntered(LookupImpl lookup, boolean orPackage) { if (lookup.isSelectionTouched() || !lookup.isCompletion()) return false; CompletionProcess process = CompletionService.getCompletionService().getCurrentCompletion(); @@ -66,6 +66,10 @@ public class JavaCharFilter extends CharFilter { } } + if (orPackage && prefix.length() > 1 && JavaPsiFacade.getInstance(file.getProject()).findPackage(prefix) != null) { + return true; + } + return false; } @@ -117,7 +121,8 @@ public class JavaCharFilter extends CharFilter { return Result.HIDE_LOOKUP; } - if ((c == '[' || c == '<' || c == '.' || c == ' ' || c == '(') && isNonImportedClassEntered((LookupImpl)lookup)) { + if ((c == '[' || c == '<' || c == '.' || c == ' ' || c == '(') && + isNonImportedClassEntered((LookupImpl)lookup, c == '.')) { return Result.HIDE_LOOKUP; } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyReferenceCharFilter.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyReferenceCharFilter.java index 6df03c3d5f32..f7d604d8fd67 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyReferenceCharFilter.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/completion/GroovyReferenceCharFilter.java @@ -47,7 +47,8 @@ public class GroovyReferenceCharFilter extends CharFilter { return Result.ADD_TO_PREFIX; } - if ((c == '[' || c == '<' || c == '.' || c == ' ' || c == '(') && JavaCharFilter.isNonImportedClassEntered((LookupImpl)lookup)) { + if ((c == '[' || c == '<' || c == '.' || c == ' ' || c == '(') && + JavaCharFilter.isNonImportedClassEntered((LookupImpl)lookup, c == '.')) { return Result.HIDE_LOOKUP; } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/completion/GroovyAutoPopupTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/completion/GroovyAutoPopupTest.groovy index e37f354abbc9..03f99f1c3f9c 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/completion/GroovyAutoPopupTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/completion/GroovyAutoPopupTest.groovy @@ -244,4 +244,11 @@ class GroovyAutoPopupTest extends CompletionAutoPopupTestCase { myFixture.checkResult '[has:]' } + public void testTypingFqn() { + CodeInsightSettings.instance.COMPLETION_CASE_SENSITIVE = CodeInsightSettings.NONE + myFixture.configureByText 'a.groovy', '' + type 'java.' + myFixture.checkResult 'java.' + } + }