diff --git a/java/java-impl/src/com/intellij/psi/codeStyle/arrangement/JavaArrangementParseInfo.java b/java/java-impl/src/com/intellij/psi/codeStyle/arrangement/JavaArrangementParseInfo.java index 7429b648d968..3497c235e18e 100644 --- a/java/java-impl/src/com/intellij/psi/codeStyle/arrangement/JavaArrangementParseInfo.java +++ b/java/java-impl/src/com/intellij/psi/codeStyle/arrangement/JavaArrangementParseInfo.java @@ -19,6 +19,7 @@ import com.intellij.openapi.util.Pair; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiMethod; import com.intellij.util.containers.ContainerUtil; +import com.intellij.util.containers.ContainerUtilRt; import com.intellij.util.containers.Stack; import gnu.trove.TObjectIntHashMap; import org.jetbrains.annotations.NotNull; @@ -104,14 +105,16 @@ public class JavaArrangementParseInfo { Stack> toProcess = new Stack>(); toProcess.push(Pair.create(method, result)); + Set usedMethods = ContainerUtilRt.newHashSet(); while (!toProcess.isEmpty()) { Pair pair = toProcess.pop(); Set dependentMethods = myMethodDependencies.get(pair.first); if (dependentMethods == null) { continue; } + usedMethods.add(pair.first); for (PsiMethod dependentMethod : dependentMethods) { - if (dependentMethod == method) { + if (usedMethods.contains(dependentMethod)) { // Prevent cyclic dependencies. return null; }