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