diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/GeneralProjectSettingsElement.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/GeneralProjectSettingsElement.java index a266c6043c06..337d3f2bd03a 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/GeneralProjectSettingsElement.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/GeneralProjectSettingsElement.java @@ -21,6 +21,7 @@ import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectBundle; import com.intellij.openapi.projectRoots.Sdk; +import com.intellij.openapi.roots.ContentEntry; import com.intellij.openapi.roots.ModuleRootModel; import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel; import com.intellij.openapi.roots.ui.configuration.projectRoot.StructureConfigurableContext; @@ -72,9 +73,9 @@ public class GeneralProjectSettingsElement extends ProjectStructureElement { Graph graph = ModuleCompilerUtil.createModuleSourceDependenciesGraph(myContext.getModulesConfigurator()); - Collection> allSourceSetCycles = extractCycles( - GraphAlgorithms.getInstance().computeStronglyConnectedComponents(graph)); - List> sourceSetCycles = removeDummyNodes(filterDuplicates(allSourceSetCycles)); + Collection> chunks = GraphAlgorithms.getInstance().computeStronglyConnectedComponents(graph); + List> sourceSetCycles = + removeSingleElementChunks(removeDummyNodes(filterDuplicates(removeSingleElementChunks(chunks)))); List cycles = new ArrayList(); @@ -128,7 +129,13 @@ public class GeneralProjectSettingsElement extends ProjectStructureElement { private boolean isDummy(ModuleSourceSet set) { JavaSourceRootType type = set.getType() == ModuleSourceSet.Type.PRODUCTION ? JavaSourceRootType.SOURCE : JavaSourceRootType.TEST_SOURCE; - return myContext.getModulesConfigurator().getRootModel(set.getModule()).getSourceRoots(type).isEmpty(); + ModuleRootModel rootModel = myContext.getModulesConfigurator().getRootModel(set.getModule()); + for (ContentEntry entry : rootModel.getContentEntries()) { + if (!entry.getSourceFolders(type).isEmpty()) { + return false; + } + } + return true; } private boolean containsModuleWithInheritedSdk() { @@ -141,7 +148,7 @@ public class GeneralProjectSettingsElement extends ProjectStructureElement { return false; } - private static Collection> extractCycles(Collection> chunks) { + private static List> removeSingleElementChunks(Collection> chunks) { return ContainerUtil.filter(chunks, new Condition>() { @Override public boolean value(Chunk chunk) {