From 781b60e4abaaa7af45aa50d537e9cb477ae65360 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Thu, 3 Mar 2011 17:31:06 +0100 Subject: [PATCH] append generated sources dirs to ModuleCompileScope when "compile module" action was invoked --- .../com/intellij/compiler/impl/CompileDriver.java | 14 ++++++++++++++ .../com/intellij/compiler/impl/CompositeScope.java | 9 +++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/java/compiler/impl/src/com/intellij/compiler/impl/CompileDriver.java b/java/compiler/impl/src/com/intellij/compiler/impl/CompileDriver.java index 8fe88f7e7062..f95e64d655d2 100644 --- a/java/compiler/impl/src/com/intellij/compiler/impl/CompileDriver.java +++ b/java/compiler/impl/src/com/intellij/compiler/impl/CompileDriver.java @@ -238,6 +238,9 @@ public class CompileDriver { public void compile(CompileScope scope, CompileStatusNotification callback, boolean clearingOutputDirsPossible) { myShouldClearOutputDirectory &= clearingOutputDirsPossible; + if (containsFileIndexScopes(scope)) { + scope = addAdditionalRoots(scope, ALL_EXCEPT_SOURCE_PROCESSING); + } if (validateCompilerConfiguration(scope, false)) { startup(scope, false, true, callback, null, true); } @@ -246,6 +249,17 @@ public class CompileDriver { } } + private static boolean containsFileIndexScopes(CompileScope scope) { + if (scope instanceof CompositeScope) { + for (CompileScope childScope : ((CompositeScope)scope).getScopes()) { + if (containsFileIndexScopes(childScope)) { + return true; + } + } + } + return scope instanceof FileIndexCompileScope; + } + private static class CompileStatus { final int CACHE_FORMAT_VERSION; final boolean COMPILATION_IN_PROGRESS; diff --git a/java/compiler/impl/src/com/intellij/compiler/impl/CompositeScope.java b/java/compiler/impl/src/com/intellij/compiler/impl/CompositeScope.java index 6a893e1db87d..9150c49c7a5a 100644 --- a/java/compiler/impl/src/com/intellij/compiler/impl/CompositeScope.java +++ b/java/compiler/impl/src/com/intellij/compiler/impl/CompositeScope.java @@ -32,10 +32,7 @@ import com.intellij.util.containers.ContainerUtil; import gnu.trove.THashSet; import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; public class CompositeScope extends UserDataHolderBase implements CompileScope{ private final List myScopes = new ArrayList(); @@ -102,4 +99,8 @@ public class CompositeScope extends UserDataHolderBase implements CompileScope{ } return super.getUserData(key); } + + public Collection getScopes() { + return Collections.unmodifiableList(myScopes); + } }