JPS JS: fix friend path detection in projects imported from Gradle (KT-18963 fixed)
(cherry picked from commit b2e53644a50a744a54ba5a718e75d8307a2d83dd)
diff --git a/jps-plugin/src/org/jetbrains/kotlin/jps/build/JpsJsModuleUtils.kt b/jps-plugin/src/org/jetbrains/kotlin/jps/build/JpsJsModuleUtils.kt
index a26bb7e..2f50750 100644
--- a/jps-plugin/src/org/jetbrains/kotlin/jps/build/JpsJsModuleUtils.kt
+++ b/jps-plugin/src/org/jetbrains/kotlin/jps/build/JpsJsModuleUtils.kt
@@ -50,11 +50,11 @@
override fun consume(module: JpsModule) {
if (module.moduleType != JpsJavaModuleType.INSTANCE) return
- if ((module != target.module || target.isTests) && module.sourceRoots.any { it.rootType == JavaSourceRootType.SOURCE}) {
+ if ((module != target.module || target.isTests) && module.hasProductionSourceRoot) {
addTarget(module, isTests = false)
}
- if (module != target.module && target.isTests && module.sourceRoots.any { it.rootType == JavaSourceRootType.TEST_SOURCE}) {
+ if (module != target.module && target.isTests && module.hasTestSourceRoot) {
addTarget(module, isTests = true)
}
}
@@ -85,3 +85,9 @@
private fun suffix(isTests: Boolean) = if (isTests) "_test" else ""
}
+
+val JpsModule.hasProductionSourceRoot
+ get() = sourceRoots.any { it.rootType == JavaSourceRootType.SOURCE}
+
+val JpsModule.hasTestSourceRoot
+ get() = sourceRoots.any { it.rootType == JavaSourceRootType.TEST_SOURCE}
\ No newline at end of file
diff --git a/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilderModuleScriptGenerator.kt b/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilderModuleScriptGenerator.kt
index 658eb9e..9395e09 100644
--- a/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilderModuleScriptGenerator.kt
+++ b/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilderModuleScriptGenerator.kt
@@ -142,7 +142,7 @@
val result = SmartList<JpsModule>(from.module)
result.addIfNotNull(getRelatedProductionModule(from.module))
- return result
+ return result.filter { it.hasProductionSourceRoot }
}
fun getAdditionalOutputDirsWhereInternalsAreVisible(target: ModuleBuildTarget): List<File> {
diff --git a/jps-plugin/testData/general/KotlinJavaScriptInternalFromSpecialRelatedModule/module2/module2.iml b/jps-plugin/testData/general/KotlinJavaScriptInternalFromSpecialRelatedModule/module2/module2.iml
index 427f7bc..3535f0f 100644
--- a/jps-plugin/testData/general/KotlinJavaScriptInternalFromSpecialRelatedModule/module2/module2.iml
+++ b/jps-plugin/testData/general/KotlinJavaScriptInternalFromSpecialRelatedModule/module2/module2.iml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
- <component name="NewModuleRootManager" inherit-compiler-output="true">
+ <component name="NewModuleRootManager">
+ <output-test url="file://$MODULE_DIR$/../out/" />
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />