From 03e6af3c44954493de69cfc22a7b7807ea92f602 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 2 Aug 2012 13:53:21 +0200 Subject: [PATCH] IDEA-89651 NPE in external build with Groovy --- .../jps/incremental/groovy/GroovyBuilder.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/plugins/groovy/rt/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java b/plugins/groovy/rt/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java index fd248ebb0d0f..1dc5c7c2f563 100644 --- a/plugins/groovy/rt/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java +++ b/plugins/groovy/rt/src/org/jetbrains/jps/incremental/groovy/GroovyBuilder.java @@ -8,6 +8,7 @@ import com.intellij.util.ArrayUtil; 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; @@ -18,6 +19,7 @@ import org.jetbrains.jps.incremental.*; 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; @@ -68,6 +70,9 @@ public class GroovyBuilder extends ModuleLevelBuilder { } Map finalOutputs = getCanonicalModuleOutputs(context, chunk); + if (finalOutputs == null) { + return ExitCode.ABORT; + } Map generationOutputs = getGenerationOutputs(chunk, finalOutputs); final Set toCompilePaths = new LinkedHashSet(); @@ -165,11 +170,14 @@ public class GroovyBuilder extends ModuleLevelBuilder { return generationOutputs; } - private static Map getCanonicalModuleOutputs(CompileContext context, ModuleChunk chunk) { + @Nullable private static Map getCanonicalModuleOutputs(CompileContext context, ModuleChunk chunk) { Map finalOutputs = new HashMap(); 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 + "/"); -- 2.23.3