diff --git a/java/compiler/impl/testSrc/com/intellij/compiler/BaseCompilerTestCase.java b/java/compiler/impl/testSrc/com/intellij/compiler/BaseCompilerTestCase.java index 366a7099d0da..b9b3e748665e 100644 --- a/java/compiler/impl/testSrc/com/intellij/compiler/BaseCompilerTestCase.java +++ b/java/compiler/impl/testSrc/com/intellij/compiler/BaseCompilerTestCase.java @@ -35,6 +35,7 @@ import junit.framework.Assert; import org.jetbrains.annotations.Nullable; import org.jetbrains.jps.util.JpsPathUtil; +import javax.swing.*; import java.io.File; import java.io.IOException; import java.util.Arrays; @@ -209,10 +210,10 @@ public abstract class BaseCompilerTestCase extends ModuleTestCase { private CompilationLog compile(final ParameterizedRunnable action) { final Ref result = Ref.create(null); final Semaphore semaphore = new Semaphore(); + semaphore.down(); UIUtil.invokeAndWaitIfNeeded(new Runnable() { @Override public void run() { - semaphore.down(); CompilerManagerImpl.testSetup(); final CompileStatusNotification callback = new CompileStatusNotification() { @@ -240,14 +241,18 @@ public abstract class BaseCompilerTestCase extends ModuleTestCase { } }); - long start = System.currentTimeMillis(); + final long start = System.currentTimeMillis(); while (!semaphore.waitFor(10)) { if (System.currentTimeMillis() - start > 60 * 1000) { throw new RuntimeException("timeout"); } + if (SwingUtilities.isEventDispatchThread()) { + UIUtil.dispatchAllInvocationEvents(); + } + } + if (SwingUtilities.isEventDispatchThread()) { UIUtil.dispatchAllInvocationEvents(); } - UIUtil.dispatchAllInvocationEvents(); return result.get(); } diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/CompileContext.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/CompileContext.java index 1c559f9da881..c03ce272ba8a 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/CompileContext.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/CompileContext.java @@ -49,6 +49,8 @@ public interface CompileContext extends UserDataHolder, MessageHandler { long getCompilationStartStamp(); + void updateCompilationStartStamp(); + void markNonIncremental(ModuleBuildTarget target); void clearNonIncrementalMark(ModuleBuildTarget target); diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/CompileContextImpl.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/CompileContextImpl.java index 853fa414bfe4..140fdb432dc9 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/CompileContextImpl.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/CompileContextImpl.java @@ -5,7 +5,8 @@ import com.intellij.openapi.util.UserDataHolderBase; import com.intellij.util.EventDispatcher; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.jps.*; +import org.jetbrains.jps.ModuleChunk; +import org.jetbrains.jps.ProjectPaths; import org.jetbrains.jps.api.CanceledStatus; import org.jetbrains.jps.builders.java.JavaModuleBuildTargetType; import org.jetbrains.jps.builders.logging.BuildLoggingManager; @@ -34,7 +35,7 @@ public class CompileContextImpl extends UserDataHolderBase implements CompileCon private final Set myNonIncrementalModules = new HashSet(); private final ProjectPaths myProjectPaths; - private final long myCompilationStartStamp; + private volatile long myCompilationStartStamp; private final ProjectDescriptor myProjectDescriptor; private final Map myBuilderParams; private final CanceledStatus myCancelStatus; @@ -64,6 +65,11 @@ public class CompileContextImpl extends UserDataHolderBase implements CompileCon return myCompilationStartStamp; } + @Override + public void updateCompilationStartStamp() { + myCompilationStartStamp = System.currentTimeMillis(); + } + @Override public ProjectPaths getProjectPaths() { return myProjectPaths; diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java index cd5d40998a25..b335e4fbd32a 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java @@ -466,6 +466,7 @@ public class IncProjectBuilder { } } finally { + context.updateCompilationStartStamp(); pd.dataManager.closeSourceToOutputStorages(groupChunks); pd.dataManager.flush(true); } @@ -478,6 +479,7 @@ public class IncProjectBuilder { buildChunkIfAffected(context, scope, chunk); } finally { + context.updateCompilationStartStamp(); pd.dataManager.closeSourceToOutputStorages(Collections.singleton(chunk)); pd.dataManager.flush(true); } diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/instructions/ArtifactRootDescriptor.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/instructions/ArtifactRootDescriptor.java index 46cd3a56a584..2b3ca83ff73b 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/instructions/ArtifactRootDescriptor.java +++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/artifacts/instructions/ArtifactRootDescriptor.java @@ -94,6 +94,6 @@ public abstract class ArtifactRootDescriptor extends BuildRootDescriptor { @Override public boolean isGenerated() { - return true;//todo[nik] we cannot detect if this root is generated by some other compiler (e.g. javac) so threat all roots as generated for now + return false;//todo[nik] we cannot detect if this root is generated by some other compiler (e.g. javac) so treat all roots as non-generated for now } }