From 54771972521ee52cb6b88cb3672192f5ff4a76f5 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Thu, 10 Mar 2011 17:16:13 +0100 Subject: [PATCH] fix: mark dependencies for recompilation when the whole class definition was commented (empty java file) --- .../com/intellij/compiler/impl/CompileDriver.java | 13 ++----------- .../src/com/intellij/compiler/make/CacheUtils.java | 4 ++-- .../com/intellij/compiler/make/DependencyCache.java | 8 ++++---- 3 files changed, 8 insertions(+), 17 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 f95e64d655d2..ed5bf54c4460 100644 --- a/java/compiler/impl/src/com/intellij/compiler/impl/CompileDriver.java +++ b/java/compiler/impl/src/com/intellij/compiler/impl/CompileDriver.java @@ -1047,20 +1047,11 @@ public class CompileDriver { final boolean hasUnprocessedTraverseRoots = context.getDependencyCache().hasUnprocessedTraverseRoots(); if (!isRebuild && (compiledSomethingForThisChunk || hasUnprocessedTraverseRoots)) { - final Set compiledWithSuccess; final Set compiledWithErrors = CacheUtils.getFilesCompiledWithErrors(context); - if (compiledWithErrors.isEmpty()) { - compiledWithSuccess = sink.getCompiledSources(); - } - else { - compiledWithSuccess = new HashSet(); - compiledWithSuccess.addAll(sink.getCompiledSources()); - compiledWithSuccess.removeAll(compiledWithErrors); - } - filesToRecompile.removeAll(compiledWithSuccess); + filesToRecompile.removeAll(sink.getCompiledSources()); filesToRecompile.addAll(compiledWithErrors); - dependentFiles = CacheUtils.findDependentFiles(context, compiledWithSuccess, dependencyFilter); + dependentFiles = CacheUtils.findDependentFiles(context, compiledWithErrors, dependencyFilter); if (!processedModules.isEmpty()) { for (Iterator it = dependentFiles.iterator(); it.hasNext();) { final VirtualFile next = it.next(); diff --git a/java/compiler/impl/src/com/intellij/compiler/make/CacheUtils.java b/java/compiler/impl/src/com/intellij/compiler/make/CacheUtils.java index 17fede94b744..3b72d2048f4d 100644 --- a/java/compiler/impl/src/com/intellij/compiler/make/CacheUtils.java +++ b/java/compiler/impl/src/com/intellij/compiler/make/CacheUtils.java @@ -130,7 +130,7 @@ public class CacheUtils { public static Collection findDependentFiles( final CompileContextEx context, - final Set succesfullyCompiledJavaFiles, + final Set compiledWithErrors, final @Nullable Function>, Pair>> filter) throws CacheCorruptedException { if (!CompilerConfiguration.MAKE_ENABLED) { @@ -141,7 +141,7 @@ public class CacheUtils { final DependencyCache dependencyCache = context.getDependencyCache(); final Pair> deps = - dependencyCache.findDependentClasses(context, context.getProject(), succesfullyCompiledJavaFiles); + dependencyCache.findDependentClasses(context, context.getProject(), compiledWithErrors); final Pair> filteredDeps = filter != null? filter.fun(deps) : deps; final Set dependentFiles = new HashSet(); diff --git a/java/compiler/impl/src/com/intellij/compiler/make/DependencyCache.java b/java/compiler/impl/src/com/intellij/compiler/make/DependencyCache.java index 7cc150d13ff3..f2cb4704c399 100644 --- a/java/compiler/impl/src/com/intellij/compiler/make/DependencyCache.java +++ b/java/compiler/impl/src/com/intellij/compiler/make/DependencyCache.java @@ -390,14 +390,14 @@ public class DependencyCache { /** * @return qualified names of the classes that should be additionally recompiled */ - public Pair> findDependentClasses(CompileContext context, Project project, Set successfullyCompiled) + public Pair> findDependentClasses(CompileContext context, Project project, Set compiledWithErrors) throws CacheCorruptedException { - markDependencies(context, project, successfullyCompiled); + markDependencies(context, project, compiledWithErrors); return new Pair>(myMarkedInfos.toArray(), Collections.unmodifiableSet(myMarkedFiles)); } - private void markDependencies(CompileContext context, Project project, final Set successfullyCompiled) throws CacheCorruptedException { + private void markDependencies(CompileContext context, Project project, final Set compiledWithErrors) throws CacheCorruptedException { try { if (LOG.isDebugEnabled()) { LOG.debug("====================Marking dependent files====================="); @@ -441,7 +441,7 @@ public class DependencyCache { final boolean markAsRemovedSource = ApplicationManager.getApplication().runReadAction(new Computable() { public Boolean compute() { VirtualFile sourceFile = sourceFileFinder.findSourceFile(qualifiedName, sourceFileName); - return sourceFile == null || successfullyCompiled.contains(sourceFile) ? Boolean.TRUE : Boolean.FALSE; + return sourceFile == null || !compiledWithErrors.contains(sourceFile) ? Boolean.TRUE : Boolean.FALSE; } }).booleanValue(); if (markAsRemovedSource) {