From 6b94d4e3d5dd02d2514e2228f015a36b9ff2f6d6 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 4 Mar 2013 18:06:07 +0100 Subject: [PATCH] IDEA-102411 Package field auto-completion popup shows constants --- .../completion/JavaNoVariantsDelegator.java | 7 ++++++- .../completion/FragmentCompletionTest.groovy | 10 ++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaNoVariantsDelegator.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaNoVariantsDelegator.java index 0e19ad9e7f20..d608f24ada6d 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaNoVariantsDelegator.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaNoVariantsDelegator.java @@ -110,7 +110,12 @@ public class JavaNoVariantsDelegator extends CompletionContributor { return; } - String fullPrefix = position.getContainingFile().getText().substring(parent.getTextRange().getStartOffset(), parameters.getOffset()); + PsiFile file = position.getContainingFile(); + if (file instanceof PsiJavaCodeReferenceCodeFragment) { + return; + } + + String fullPrefix = file.getText().substring(parent.getTextRange().getStartOffset(), parameters.getOffset()); CompletionResultSet qualifiedCollector = result.withPrefixMatcher(fullPrefix); ElementFilter filter = JavaCompletionContributor.getReferenceFilter(position); for (LookupElement base : suggestQualifierItems(parameters, (PsiJavaCodeReferenceElement)qualifier, filter)) { diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/FragmentCompletionTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/FragmentCompletionTest.groovy index d1a93f36494e..2337d9cee4d5 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/FragmentCompletionTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/FragmentCompletionTest.groovy @@ -51,6 +51,16 @@ public class FragmentCompletionTest extends LightCodeInsightFixtureTestCase { myFixture.checkResult(text) } + public void "test no constants in reference code fragment"() throws Throwable { + myFixture.addClass("package foo; public interface FooIntf { int constant = 2 }") + + def text = "FooInt.con" + PsiFile file = JavaCodeFragmentFactory.getInstance(project).createReferenceCodeFragment(text, null, true, false); + myFixture.configureFromExistingVirtualFile(file.getVirtualFile()); + assert !myFixture.complete(CompletionType.BASIC, 2) + myFixture.checkResult(text) + } + public void testNoPackagesInExpressionCodeFragment() throws Throwable { final String text = "jav"; PsiFile file = JavaCodeFragmentFactory.getInstance(project).createExpressionCodeFragment(text, null, null, true);