Add Java Source Roots to classpath

#KT-3062 Fixed

Original commit: ff45322d1a
This commit is contained in:
Natalia.Ukhorskaya
2012-11-21 19:29:49 +04:00
parent ae57dfe9a8
commit 765147b876
@@ -21,6 +21,7 @@ import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.compiler.runner.KotlinModuleScriptGenerator;
import org.jetbrains.jps.builders.java.JavaSourceRootDescriptor;
import org.jetbrains.jps.incremental.CompileContext;
import org.jetbrains.jps.incremental.ModuleBuildTarget;
import org.jetbrains.jps.incremental.messages.BuildMessage;
@@ -31,10 +32,7 @@ import org.jetbrains.jps.model.java.JpsJavaDependenciesEnumerator;
import org.jetbrains.jps.model.java.JpsJavaExtensionService;
import org.jetbrains.jps.model.library.JpsLibrary;
import org.jetbrains.jps.model.library.JpsLibraryRoot;
import org.jetbrains.jps.model.module.JpsDependencyElement;
import org.jetbrains.jps.model.module.JpsLibraryDependency;
import org.jetbrains.jps.model.module.JpsModule;
import org.jetbrains.jps.model.module.JpsSdkDependency;
import org.jetbrains.jps.model.module.*;
import org.jetbrains.jps.util.JpsPathUtil;
import java.io.File;
@@ -51,7 +49,7 @@ public class KotlinBuilderModuleScriptGenerator {
{
CharSequence moduleScriptText = KotlinModuleScriptGenerator.generateModuleScript(
target.getId(),
getKotlinModuleDependencies(target),
getKotlinModuleDependencies(context, target),
sourceFiles,
target.isTests(),
// this excludes the output directory from the class path, to be removed for true incremental compilation
@@ -65,11 +63,12 @@ public class KotlinBuilderModuleScriptGenerator {
return scriptFile;
}
private static DependencyProvider getKotlinModuleDependencies(final ModuleBuildTarget target) {
private static DependencyProvider getKotlinModuleDependencies(final CompileContext context, final ModuleBuildTarget target) {
return new DependencyProvider() {
@Override
public void processClassPath(@NotNull KotlinModuleScriptGenerator.DependencyProcessor processor) {
processor.processClassPathSection("All", findClassPathRoots(target));
processor.processClassPathSection("Classpath", findClassPathRoots(target));
processor.processClassPathSection("Java Source Roots", findSourceRoots(context, target));
processor.processAnnotationRoots(findAnnotationRoots(target));
}
};
@@ -93,6 +92,19 @@ public class KotlinBuilderModuleScriptGenerator {
return dependencies.classes().getRoots();
}
@NotNull
private static Collection<File> findSourceRoots(@NotNull CompileContext context, @NotNull ModuleBuildTarget target) {
List<JavaSourceRootDescriptor> roots = context.getProjectDescriptor().getBuildRootIndex().getTargetRoots(target, context);
Collection<File> result = ContainerUtil.newArrayList();
for (JavaSourceRootDescriptor root : roots) {
File file = root.getRootFile();
if (file.exists()) {
result.add(file);
}
}
return result;
}
@NotNull
private static List<File> findAnnotationRoots(@NotNull ModuleBuildTarget target) {
JpsModule module = target.getModule();