javac ast indices: carefully update data about compiled modules

This commit is contained in:
Dmitry Batkovich
2017-01-16 17:58:17 +03:00
parent eb77e62e33
commit 68f40b6701
@@ -15,21 +15,25 @@
*/
package org.jetbrains.jps.backwardRefs;
import gnu.trove.THashSet;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.ModuleChunk;
import org.jetbrains.jps.builders.BuildTarget;
import org.jetbrains.jps.builders.DirtyFilesHolder;
import org.jetbrains.jps.builders.ModuleBasedTarget;
import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor;
import org.jetbrains.jps.incremental.*;
import org.jetbrains.jps.incremental.messages.CustomBuilderMessage;
import org.jetbrains.jps.model.module.JpsModule;
import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Set;
public class BackwardReferenceIndexBuilder extends ModuleLevelBuilder {
public static final String BUILDER_ID = "compiler.ref.index";
private static final String MESSAGE_TYPE = "processed module";
public BackwardReferenceIndexBuilder() {
super(BuilderCategory.CLASS_POST_PROCESSOR);
@@ -48,6 +52,23 @@ public class BackwardReferenceIndexBuilder extends ModuleLevelBuilder {
@Override
public void buildFinished(CompileContext context) {
final List<BuildTarget<?>> targets = context.getProjectDescriptor().getBuildTargetIndex().getAllTargets();
Set<String> classFilesTargets = new THashSet<String>();
for (BuildTarget<?> target : targets) {
if (target instanceof ModuleBuildTarget) {
classFilesTargets.add(((ModuleBuildTarget)target).getModule().getName());
}
}
for (BuildTarget<?> target : targets) {
if (target instanceof ModuleBasedTarget && !(target instanceof ModuleBuildTarget)) {
final String moduleName = ((ModuleBasedTarget)target).getModule().getName();
if (!classFilesTargets.contains(moduleName)) {
context.processMessage(new CustomBuilderMessage(BUILDER_ID, MESSAGE_TYPE, moduleName));
}
}
}
BackwardReferenceIndexWriter.closeIfNeed();
}
@@ -73,9 +94,8 @@ public class BackwardReferenceIndexBuilder extends ModuleLevelBuilder {
for (ModuleBuildTarget target : chunk.getTargets()) {
if (context.getScope().isWholeTargetAffected(target)) {
final JpsModule module = target.getModule();
final String moduleName = module.getName();
context.processMessage(new CustomBuilderMessage(BUILDER_ID, "processed module", moduleName));
final String moduleName = target.getModule().getName();
context.processMessage(new CustomBuilderMessage(BUILDER_ID, MESSAGE_TYPE, moduleName));
}
}