import com.intellij.util.Consumer;
import com.intellij.util.SystemProperties;
import groovy.util.CharsetToolkit;
+import org.jetbrains.annotations.Nullable;
import org.jetbrains.asm4.ClassReader;
import org.jetbrains.ether.dependencyView.Callbacks;
import org.jetbrains.ether.dependencyView.Mappings;
import org.jetbrains.jps.incremental.fs.RootDescriptor;
import org.jetbrains.jps.incremental.java.ClassPostProcessor;
import org.jetbrains.jps.incremental.java.JavaBuilder;
+import org.jetbrains.jps.incremental.messages.BuildMessage;
import org.jetbrains.jps.incremental.messages.CompilerMessage;
import org.jetbrains.jps.incremental.messages.FileGeneratedEvent;
import org.jetbrains.jps.incremental.messages.ProgressMessage;
}
Map<JpsModule, String> finalOutputs = getCanonicalModuleOutputs(context, chunk);
+ if (finalOutputs == null) {
+ return ExitCode.ABORT;
+ }
Map<JpsModule, String> generationOutputs = getGenerationOutputs(chunk, finalOutputs);
final Set<String> toCompilePaths = new LinkedHashSet<String>();
return generationOutputs;
}
- private static Map<JpsModule, String> getCanonicalModuleOutputs(CompileContext context, ModuleChunk chunk) {
+ @Nullable private static Map<JpsModule, String> getCanonicalModuleOutputs(CompileContext context, ModuleChunk chunk) {
Map<JpsModule, String> finalOutputs = new HashMap<JpsModule, String>();
for (JpsModule module : chunk.getModules()) {
File moduleOutputDir = context.getProjectPaths().getModuleOutputDir(module, context.isCompilingTests());
- assert moduleOutputDir != null;
+ if (moduleOutputDir == null) {
+ context.processMessage(new CompilerMessage(BUILDER_NAME, BuildMessage.Kind.ERROR, "Output directory not specified for module " + module.getName()));
+ return null;
+ }
String moduleOutputPath = FileUtil.toCanonicalPath(moduleOutputDir.getPath());
assert moduleOutputPath != null;
finalOutputs.put(module, moduleOutputPath.endsWith("/") ? moduleOutputPath : moduleOutputPath + "/");