From e9b7d1f1510b054066fdb64e361f167e34da26ce Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Tue, 25 Jun 2013 17:46:18 +0400 Subject: [PATCH] EA-33207 - assert: PsiWalkingState.elementStarted --- .../impl/source/codeStyle/ImportHelper.java | 44 ++++++++++--------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportHelper.java b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportHelper.java index 15716567cab7..39a8cdc7a516 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportHelper.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportHelper.java @@ -124,7 +124,7 @@ public class ImportHelper{ } public static void collectOnDemandImports(List> resultList, - final Set classesOrPackagesToImportOnDemand, + final Set classesOrPackagesToImportOnDemand, final CodeStyleSettings settings) { TObjectIntHashMap packageToCountMap = new TObjectIntHashMap(); TObjectIntHashMap classToCountMap = new TObjectIntHashMap(); @@ -132,7 +132,7 @@ public class ImportHelper{ String name = pair.getFirst(); Boolean isStatic = pair.getSecond(); String packageOrClassName = getPackageOrClassName(name); - if (packageOrClassName.length() == 0) continue; + if (packageOrClassName.isEmpty()) continue; if (isStatic) { int count = classToCountMap.get(packageOrClassName); classToCountMap.put(packageOrClassName, count + 1); @@ -209,12 +209,12 @@ public class ImportHelper{ String name = pair.getFirst(); Boolean isStatic = pair.getSecond(); String prefix = getPackageOrClassName(name); - if (prefix.length() == 0) continue; + if (prefix.isEmpty()) continue; final boolean isImplicitlyImported = implicitlyImportedPackages.contains(prefix); if (!onDemandImports.contains(prefix) && !isImplicitlyImported) continue; String shortName = PsiNameHelper.getShortClassName(name); - String thisPackageClass = thisPackageName.length() > 0 ? thisPackageName + "." + shortName : shortName; + String thisPackageClass = !thisPackageName.isEmpty() ? thisPackageName + "." + shortName : shortName; if (JavaPsiFacade.getInstance(manager.getProject()).findClass(thisPackageClass, resolveScope) != null) { namesToUseSingle.add(name); continue; @@ -303,7 +303,7 @@ public class ImportHelper{ conflicts.addAll(inter); } } - if (!conflicts.isEmpty()) { + if (!conflicts.isEmpty() && !(file instanceof PsiCompiledElement)) { file.accept(new JavaRecursiveElementVisitor() { @Override public void visitReferenceElement(PsiJavaCodeReferenceElement reference) { @@ -382,7 +382,7 @@ public class ImportHelper{ } boolean useOnDemand = true; - if (packageName.length() == 0){ + if (packageName.isEmpty()){ useOnDemand = false; } @@ -640,7 +640,7 @@ public class ImportHelper{ int limitCount = isStaticImportNeeded ? settings.NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND : settings.CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND; if (classCount >= limitCount) return true; - if (packageName.length() == 0) return false; + if (packageName.isEmpty()) return false; PackageEntryTable table = settings.PACKAGES_TO_USE_IMPORT_ON_DEMAND; return table != null && table.contains(packageName); } @@ -839,21 +839,23 @@ public class ImportHelper{ final boolean[] hasResolveProblem = {false}; // do not visit imports for (PsiClass aClass : file.getClasses()) { - aClass.accept(new JavaRecursiveElementWalkingVisitor() { - @Override - public void visitReferenceElement(PsiJavaCodeReferenceElement reference) { - String name = reference.getReferenceName(); - Pair pair = unresolvedNames.get(name); - if (reference.multiResolve(false).length == 0) { - hasResolveProblem[0] = true; - if (pair != null) { - namesToImport.add(pair); - unresolvedNames.remove(name); + if (!(aClass instanceof PsiCompiledElement)) { + aClass.accept(new JavaRecursiveElementWalkingVisitor() { + @Override + public void visitReferenceElement(PsiJavaCodeReferenceElement reference) { + String name = reference.getReferenceName(); + Pair pair = unresolvedNames.get(name); + if (reference.multiResolve(false).length == 0) { + hasResolveProblem[0] = true; + if (pair != null) { + namesToImport.add(pair); + unresolvedNames.remove(name); + } } + super.visitReferenceElement(reference); } - super.visitReferenceElement(reference); - } - }); + }); + } } if (hasResolveProblem[0]) { namesToImport.addAll(unresolvedOnDemand); @@ -872,7 +874,7 @@ public class ImportHelper{ public static boolean hasPackage(@NotNull String className, @NotNull String packageName){ if (!className.startsWith(packageName)) return false; if (className.length() == packageName.length()) return false; - if (packageName.length() > 0 && className.charAt(packageName.length()) != '.') return false; + if (!packageName.isEmpty() && className.charAt(packageName.length()) != '.') return false; return className.indexOf('.', packageName.length() + 1) < 0; }