From 68f40b670126c75d5aabb4cfd5d5e6cda2b9a48b Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Mon, 16 Jan 2017 17:57:26 +0300 Subject: [PATCH] javac ast indices: carefully update data about compiled modules --- .../BackwardReferenceIndexBuilder.java | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/jps/jps-builders/src/org/jetbrains/jps/backwardRefs/BackwardReferenceIndexBuilder.java b/jps/jps-builders/src/org/jetbrains/jps/backwardRefs/BackwardReferenceIndexBuilder.java index b214c1796ede..9ddb5d1047ea 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/backwardRefs/BackwardReferenceIndexBuilder.java +++ b/jps/jps-builders/src/org/jetbrains/jps/backwardRefs/BackwardReferenceIndexBuilder.java @@ -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> targets = context.getProjectDescriptor().getBuildTargetIndex().getAllTargets(); + Set classFilesTargets = new THashSet(); + 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)); } }