From f81181a974a4666a48b5bb9ec9a95e8aa13ba544 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Wed, 28 Oct 2009 14:17:15 +0300 Subject: [PATCH] tests --- .../resolve/ClassResolverProcessor.java | 22 +++++++++++-------- .../HeavySmartTypeCompletion15Test.java | 17 +++++++++----- 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/java/java-impl/src/com/intellij/psi/impl/source/resolve/ClassResolverProcessor.java b/java/java-impl/src/com/intellij/psi/impl/source/resolve/ClassResolverProcessor.java index d68013cbca2c..e6a93bc62c45 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/resolve/ClassResolverProcessor.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/resolve/ClassResolverProcessor.java @@ -16,6 +16,7 @@ package com.intellij.psi.impl.source.resolve; import com.intellij.openapi.util.Key; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.infos.CandidateInfo; import com.intellij.psi.infos.ClassCandidateInfo; @@ -91,6 +92,13 @@ public class ClassResolverProcessor extends BaseScopeProcessor implements NameHi } } + private static boolean isOnDemand(PsiElement fileContext, PsiClass psiClass) { + if (fileContext instanceof PsiImportStatementBase && ((PsiImportStatementBase)fileContext).isOnDemand()) return true; + String fqn = psiClass.getQualifiedName(); + if (fqn == null) return false; + return "java.lang".equals(StringUtil.getPackageName(fqn)); + } + public boolean execute(PsiElement element, ResolveState state) { if (!(element instanceof PsiClass)) return true; final PsiClass aClass = (PsiClass)element; @@ -119,14 +127,11 @@ public class ClassResolverProcessor extends BaseScopeProcessor implements NameHi } // single import wins over on-demand - if (myCurrentFileContext instanceof PsiImportStatementBase && - info.getCurrentFileResolveScope() instanceof PsiImportStatementBase) { - PsiImportStatementBase myImport = (PsiImportStatementBase)myCurrentFileContext; - PsiImportStatementBase otherImport = (PsiImportStatementBase)info.getCurrentFileResolveScope(); - if (myImport.isOnDemand() && !otherImport.isOnDemand()) return true; - if (!myImport.isOnDemand() && otherImport.isOnDemand()) { - myCandidates.remove(i); - } + boolean myOnDemand = isOnDemand(myCurrentFileContext, aClass); + boolean otherOnDemand = isOnDemand(info.getCurrentFileResolveScope(), otherClass); + if (myOnDemand && !otherOnDemand) return true; + if (!myOnDemand && otherOnDemand) { + myCandidates.remove(i); } } } @@ -140,7 +145,6 @@ public class ClassResolverProcessor extends BaseScopeProcessor implements NameHi if (!accessible) return true; if (!(myCurrentFileContext instanceof PsiImportStatementBase)) return false; - return true; } diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/HeavySmartTypeCompletion15Test.java b/java/java-tests/testSrc/com/intellij/codeInsight/completion/HeavySmartTypeCompletion15Test.java index a74f1a917b26..95acb8999c9e 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/HeavySmartTypeCompletion15Test.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/HeavySmartTypeCompletion15Test.java @@ -37,12 +37,19 @@ public class HeavySmartTypeCompletion15Test extends CompletionTestCase { "public class Bar {" + " protected Bar(java.util.List list) {}" + "}"); + doTest(); + } - configureByFile(BASE_PATH + "/ProtectedAnonymousConstructor.java"); - checkResultByFile(BASE_PATH + "/ProtectedAnonymousConstructor-out.java"); - - configureByFile(BASE_PATH + "/ProtectedAnonymousConstructor2.java"); - checkResultByFile(BASE_PATH + "/ProtectedAnonymousConstructor2-out.java"); + public void testProtectedAnonymousConstructor2() throws Throwable { + createClass("package pkg;" + + "public class Foo {" + + " protected Foo(int a) {}" + + "}"); + createClass("package pkg;" + + "public class Bar {" + + " protected Bar(java.util.List list) {}" + + "}"); + doTest(); } public void testUnlockDocument() throws Throwable {