diff --git a/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.kt b/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.kt index fd8e782ee22..8dff4f07311 100644 --- a/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.kt +++ b/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.kt @@ -87,8 +87,6 @@ public class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR val representativeTarget = chunk.representativeTarget() - val outputDir = representativeTarget.getOutputDir() - val dataManager = context.getProjectDescriptor().dataManager val incrementalCaches = chunk.getTargets().keysToMap { dataManager.getStorage(it, IncrementalCacheStorageProvider) } @@ -114,7 +112,6 @@ public class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR val environment = CompilerEnvironment.getEnvironmentFor( PathUtil.getKotlinPathsForJpsPluginOrJpsTests(), - outputDir, javaClass.getClassLoader(), { className -> className!!.startsWith("org.jetbrains.jet.lang.resolve.kotlin.incremental.cache.") @@ -128,8 +125,6 @@ public class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR return ABORT } - assert(outputDir != null, "CompilerEnvironment must have checked for outputDir to be not null, but it didn't") - val outputItemCollector = OutputItemsCollectorImpl() val project = representativeTarget.getModule().getProject()!! @@ -162,6 +157,8 @@ public class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR return NOTHING_DONE } + val outputDir = KotlinBuilderModuleScriptGenerator.getOutputDirSafe(representativeTarget) + val outputFile = File(outputDir, representativeTarget.getModule().getName() + ".js") val libraryFiles = JpsJsModuleUtils.getLibraryFilesAndDependencies(representativeTarget) val k2JsArguments = JpsKotlinCompilerSettings.getK2JsCompilerArguments(project) diff --git a/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilderModuleScriptGenerator.java b/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilderModuleScriptGenerator.java index 8a12efc8468..4bf4e25a006 100644 --- a/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilderModuleScriptGenerator.java +++ b/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilderModuleScriptGenerator.java @@ -31,6 +31,7 @@ import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor; import org.jetbrains.jps.builders.logging.ProjectBuilderLogger; import org.jetbrains.jps.incremental.CompileContext; import org.jetbrains.jps.incremental.ModuleBuildTarget; +import org.jetbrains.jps.incremental.ProjectBuildException; import org.jetbrains.jps.model.java.JpsAnnotationRootType; import org.jetbrains.jps.model.java.JpsJavaSdkType; import org.jetbrains.jps.model.library.JpsLibrary; @@ -60,7 +61,7 @@ public class KotlinBuilderModuleScriptGenerator { MultiMap sourceFiles, // ignored for non-incremental compilation boolean hasRemovedFiles ) - throws IOException + throws IOException, ProjectBuildException { KotlinModuleDescriptionBuilder builder = FACTORY.create(); @@ -68,11 +69,11 @@ public class KotlinBuilderModuleScriptGenerator { Set outputDirs = new HashSet(); for (ModuleBuildTarget target : chunk.getTargets()) { - outputDirs.add(getOutputDir(target)); + outputDirs.add(getOutputDirSafe(target)); } ProjectBuilderLogger logger = context.getLoggingManager().getProjectBuilderLogger(); for (ModuleBuildTarget target : chunk.getTargets()) { - File outputDir = getOutputDir(target); + File outputDir = getOutputDirSafe(target); List moduleSources = new ArrayList( IncrementalCompilation.ENABLED @@ -108,10 +109,10 @@ public class KotlinBuilderModuleScriptGenerator { } @NotNull - private static File getOutputDir(@NotNull ModuleBuildTarget target) { + public static File getOutputDirSafe(@NotNull ModuleBuildTarget target) throws ProjectBuildException { File outputDir = target.getOutputDir(); if (outputDir == null) { - throw new IllegalStateException("No output directory found for " + target); + throw new ProjectBuildException("No output directory found for " + target); } return outputDir; }