+1
-1
@@ -93,7 +93,7 @@ public class KotlinBuilderModuleScriptGenerator {
|
||||
@NotNull
|
||||
private static Collection<File> findClassPathRoots(@NotNull ModuleBuildTarget target) {
|
||||
JpsModule module = target.getModule();
|
||||
JpsJavaDependenciesEnumerator dependencies = JpsJavaExtensionService.dependencies(module)
|
||||
JpsJavaDependenciesEnumerator dependencies = JpsJavaExtensionService.dependencies(module).recursively().exportedOnly()
|
||||
.includedIn(JpsJavaClasspathKind.compile(target.isTests()));
|
||||
|
||||
return dependencies.classes().getRoots();
|
||||
|
||||
@@ -34,6 +34,7 @@ import org.jetbrains.jps.util.JpsPathUtil;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
|
||||
public abstract class AbstractKotlinJpsBuildTestCase extends JpsBuildTestCase {
|
||||
protected static final String TEST_DATA_PATH = "jps-plugin/testData/";
|
||||
@@ -75,15 +76,15 @@ public abstract class AbstractKotlinJpsBuildTestCase extends JpsBuildTestCase {
|
||||
}
|
||||
|
||||
protected JpsLibrary addKotlinRuntimeDependency() {
|
||||
return addKotlinRuntimeDependency(JpsJavaDependencyScope.COMPILE);
|
||||
return addKotlinRuntimeDependency(JpsJavaDependencyScope.COMPILE, myProject.getModules(), false);
|
||||
}
|
||||
|
||||
protected JpsLibrary addKotlinRuntimeDependency(JpsJavaDependencyScope type) {
|
||||
protected JpsLibrary addKotlinRuntimeDependency(JpsJavaDependencyScope type, Collection<JpsModule> modules, boolean exported) {
|
||||
JpsLibrary library = myProject.addLibrary("kotlin-runtime", JpsJavaLibraryType.INSTANCE);
|
||||
File runtime = PathUtil.getKotlinPathsForDistDirectory().getRuntimePath();
|
||||
library.addRoot(runtime, JpsOrderRootType.COMPILED);
|
||||
for (JpsModule module : myProject.getModules()) {
|
||||
JpsModuleRootModificationUtil.addDependency(module, library, type, false);
|
||||
for (JpsModule module : modules) {
|
||||
JpsModuleRootModificationUtil.addDependency(module, library, type, exported);
|
||||
}
|
||||
return library;
|
||||
}
|
||||
|
||||
@@ -16,8 +16,11 @@
|
||||
|
||||
package org.jetbrains.jet.jps.build;
|
||||
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.jps.model.java.*;
|
||||
import org.jetbrains.jps.model.module.JpsModule;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
@@ -88,10 +91,22 @@ public class KotlinJpsBuildTestCase extends AbstractKotlinJpsBuildTestCase {
|
||||
|
||||
public void testTestDependencyLibrary() throws Throwable {
|
||||
initProject();
|
||||
addKotlinRuntimeDependency(JpsJavaDependencyScope.TEST);
|
||||
addKotlinRuntimeDependency(JpsJavaDependencyScope.TEST, myProject.getModules(), false);
|
||||
makeAll().assertSuccessful();
|
||||
change(workDir + "/src/src.kt", "fun foo() { println() }");
|
||||
makeAll().assertFailed();
|
||||
}
|
||||
|
||||
public void testReexportedDependency() {
|
||||
initProject();
|
||||
addKotlinRuntimeDependency(JpsJavaDependencyScope.COMPILE,
|
||||
ContainerUtil.filter(myProject.getModules(), new Condition<JpsModule>() {
|
||||
@Override
|
||||
public boolean value(JpsModule module) {
|
||||
return module.getName().equals("module2");
|
||||
}
|
||||
}), true);
|
||||
makeAll().assertSuccessful();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="IDEA_JDK" jdkType="JavaSDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module" module-name="module3" />
|
||||
</component>
|
||||
</module>
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<option name="DEFAULT_COMPILER" value="Javac" />
|
||||
</component>
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/kotlinProject.iml" filepath="$PROJECT_DIR$/kotlinProject.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/module2/module2.iml" filepath="$PROJECT_DIR$/module2/module2.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/module3/module3.iml" filepath="$PROJECT_DIR$/module3/module3.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="IDEA_JDK" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="IDEA_JDK" jdkType="JavaSDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="KotlinRuntime" level="project" exported="" />
|
||||
</component>
|
||||
</module>
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
public class JSecond {
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
class K2
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="IDEA_JDK" jdkType="JavaSDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module" module-name="module2" exported="" />
|
||||
</component>
|
||||
</module>
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
fun f() {
|
||||
JSecond()
|
||||
K2()
|
||||
println("Hi")
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
fun main() {
|
||||
f()
|
||||
JSecond()
|
||||
K2()
|
||||
println("Hi")
|
||||
}
|
||||
Reference in New Issue
Block a user