Improved output dir checking in KotlinBuilder.

Output dir for representative target is necessary only for JS part: moved there.

Original commit: 97b516a600
This commit is contained in:
Evgeny Gerashchenko
2014-10-30 16:01:28 +03:00
parent 6917c317ba
commit 676b09ca6d
2 changed files with 8 additions and 10 deletions
@@ -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)
@@ -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<ModuleBuildTarget, File> 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<File> outputDirs = new HashSet<File>();
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<File> moduleSources = new ArrayList<File>(
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;
}