diff --git a/java/java-impl/src/com/intellij/psi/impl/file/PsiPackageImpl.java b/java/java-impl/src/com/intellij/psi/impl/file/PsiPackageImpl.java index 30b807bf0d47..bd7885956600 100644 --- a/java/java-impl/src/com/intellij/psi/impl/file/PsiPackageImpl.java +++ b/java/java-impl/src/com/intellij/psi/impl/file/PsiPackageImpl.java @@ -496,7 +496,8 @@ public class PsiPackageImpl extends PsiElementBase implements PsiPackage, Querya if (classHint == null || classHint.shouldProcess(ElementClassHint.DeclaractionKind.CLASS)) { NameHint nameHint = processor.getHint(NameHint.KEY); if (nameHint != null) { - if (processClassesByName(processor, state, place, scope, nameHint.getName(state))) return false; + final String shortName = nameHint.getName(state); + if (containsClassNamed(shortName) && processClassesByName(processor, state, place, scope, shortName)) return false; } else if (prefixMatcher != null && migration == null) { for (String className : getClassNamesCache()) { diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyFileImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyFileImpl.java index bbdfcbb18620..c414d89f5738 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyFileImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyFileImpl.java @@ -18,14 +18,11 @@ package org.jetbrains.plugins.groovy.lang.psi.impl; import com.intellij.lang.ASTNode; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.module.Module; -import com.intellij.openapi.module.ModuleUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.util.UserDataCache; -import com.intellij.openapi.util.UserDataHolder; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; @@ -40,11 +37,7 @@ import com.intellij.psi.stubs.StubElement; import com.intellij.psi.util.CachedValue; import com.intellij.psi.util.CachedValueProvider; import com.intellij.psi.util.CachedValuesManager; -import com.intellij.psi.util.PsiModificationTracker; import com.intellij.util.IncorrectOperationException; -import com.intellij.util.containers.ConcurrentFactoryMap; -import com.intellij.util.containers.ContainerUtil; -import com.intellij.util.containers.FactoryMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.groovy.GroovyFileType; @@ -66,7 +59,9 @@ import org.jetbrains.plugins.groovy.lang.resolve.ResolveUtil; import org.jetbrains.plugins.groovy.lang.resolve.processors.ClassHint; import javax.swing.*; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; /** * Implements all abstractions related to Groovy file @@ -74,7 +69,6 @@ import java.util.*; * @author ilyas */ public class GroovyFileImpl extends GroovyFileBaseImpl implements GroovyFile { - private static final Key>>> IMPLICITLY_IMPORTABLE_CLASSES = Key.create("IMplicitlyImportable"); private static final Logger LOG = Logger.getInstance("org.jetbrains.plugins.groovy.lang.psi.impl.GroovyFileImpl"); private static final Object lock = new Object(); @@ -82,8 +76,6 @@ public class GroovyFileImpl extends GroovyFileBaseImpl implements GroovyFile { private GroovyScriptClass myScriptClass; private static final String SYNTHETIC_PARAMETER_NAME = "args"; private GrParameter mySyntheticArgsParameter = null; - - private PsiElement myContext; public GroovyFileImpl(FileViewProvider viewProvider) { @@ -162,7 +154,7 @@ public class GroovyFileImpl extends GroovyFileBaseImpl implements GroovyFile { } } - if (processClasses && !processImplicitImports(processor, state, lastParent, place, expectedName)) { + if (processClasses && !processImplicitImports(processor, state, lastParent, place)) { return false; } @@ -212,16 +204,10 @@ public class GroovyFileImpl extends GroovyFileBaseImpl implements GroovyFile { } private boolean processImplicitImports(PsiScopeProcessor processor, ResolveState state, PsiElement lastParent, - PsiElement place, @Nullable String className) { + PsiElement place) { JavaPsiFacade facade = JavaPsiFacade.getInstance(getProject()); - final FactoryMap> cache = getImplicitlyImportableClassNames(); - for (final String implicitlyImported : getImplicitlyImportedPackages()) { - if (className != null && !cache.get(implicitlyImported).contains(className)) { - continue; - } - PsiPackage aPackage = facade.findPackage(implicitlyImported); if (aPackage != null && !aPackage.processDeclarations(processor, state, lastParent, place)) return false; } @@ -233,36 +219,6 @@ public class GroovyFileImpl extends GroovyFileBaseImpl implements GroovyFile { return true; } - @NotNull - private FactoryMap> getImplicitlyImportableClassNames() { - final Module module = ModuleUtil.findModuleForPsiElement(this); - UserDataHolder holder = module != null ? module : this; - - return CachedValuesManager.getManager(getProject()).getCachedValue(holder, IMPLICITLY_IMPORTABLE_CLASSES, new CachedValueProvider>>() { - public Result>> compute() { - final JavaPsiFacade facade = JavaPsiFacade.getInstance(getProject()); - - final FactoryMap> result = new ConcurrentFactoryMap>() { - @Override - protected Set create(String pkgName) { - final HashSet shortNames = new HashSet(); - PsiPackage aPackage = facade.findPackage(pkgName); - if (aPackage != null) { - for (PsiClass aClass : aPackage.getClasses()) { - ContainerUtil.addIfNotNull(aClass.getName(), shortNames); - } - } - return shortNames; - } - }; - - return Result.create(result, ProjectRootManager.getInstance(getProject()), PsiModificationTracker.JAVA_STRUCTURE_MODIFICATION_COUNT); - } - }, false); - } - - - private static boolean processChildrenScopes(PsiElement element, PsiScopeProcessor processor, ResolveState state,