diff --git a/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt
index 2fb9a5366eb..68e69db9eaf 100644
--- a/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt
+++ b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt
@@ -371,6 +371,11 @@ class KotlinJpsBuildTest : AbstractKotlinJpsBuildTestCase() {
assertEquals(Collections.EMPTY_SET, contentOfOutputDir(PROJECT_NAME))
}
+ fun testKotlinJavaScriptProjectWithEmptyDependencies() {
+ initProject(JS_STDLIB)
+ makeAll().assertSuccessful()
+ }
+
fun testKotlinJavaScriptProjectWithTests() {
initProject(JS_STDLIB)
makeAll().assertSuccessful()
@@ -387,9 +392,8 @@ class KotlinJpsBuildTest : AbstractKotlinJpsBuildTestCase() {
buildResult.assertSuccessful()
val warnings = buildResult.getMessages(BuildMessage.Kind.WARNING)
- assertEquals("Warning about duplicate module definition: $warnings", 2, warnings.size)
+ assertEquals("Warning about duplicate module definition: $warnings", 1, warnings.size)
assertEquals("Module \"srcAndTests\" is defined in more, than one file", warnings[0].messageText)
- assertEquals("Module \"srcAndTests\" is defined in more, than one file", warnings[1].messageText)
}
fun testKotlinJavaScriptProjectWithTwoSrcModuleDependency() {
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 441f5a41602..be1021991db 100644
--- a/jps-plugin/src/org/jetbrains/kotlin/jps/build/JpsJsModuleUtils.kt
+++ b/jps-plugin/src/org/jetbrains/kotlin/jps/build/JpsJsModuleUtils.kt
@@ -50,22 +50,12 @@ object JpsJsModuleUtils {
override fun consume(module: JpsModule) {
if (module.moduleType != JpsJavaModuleType.INSTANCE) return
- var yieldProduction = module != target.module || target.isTests
- var yieldTests = module != target.module
+ if ((module != target.module || target.isTests) && module.sourceRoots.any { it.rootType == JavaSourceRootType.SOURCE}) {
+ addTarget(module, JavaModuleBuildTargetType.PRODUCTION)
+ }
- module.sourceRoots.forEach {
- if (it.rootType == JavaSourceRootType.SOURCE) {
- if (yieldProduction) {
- addTarget(module, JavaModuleBuildTargetType.PRODUCTION)
- yieldProduction = false
- }
- }
- else {
- if (yieldTests) {
- addTarget(module, JavaModuleBuildTargetType.TEST)
- yieldTests = false
- }
- }
+ if (module != target.module && target.isTests && module.sourceRoots.any { it.rootType == JavaSourceRootType.TEST_SOURCE}) {
+ addTarget(module, JavaModuleBuildTargetType.TEST)
}
}
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/emptySrc/emptySrc.iml b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/emptySrc/emptySrc.iml
new file mode 100644
index 00000000000..9e63df53537
--- /dev/null
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/emptySrc/emptySrc.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/emptySrc/src/dummy b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/emptySrc/src/dummy
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/emptySrcEmptyTests/emptySrcEmptyTests.iml b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/emptySrcEmptyTests/emptySrcEmptyTests.iml
new file mode 100644
index 00000000000..0ab15714c75
--- /dev/null
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/emptySrcEmptyTests/emptySrcEmptyTests.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+ i
+
+
+
+
+
+
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/emptySrcEmptyTests/src/dummy b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/emptySrcEmptyTests/src/dummy
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/emptySrcEmptyTests/test/dummy b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/emptySrcEmptyTests/test/dummy
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/emptySrcMissingTests/emptySrcMissingTests.iml b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/emptySrcMissingTests/emptySrcMissingTests.iml
new file mode 100644
index 00000000000..0ab15714c75
--- /dev/null
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/emptySrcMissingTests/emptySrcMissingTests.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+ i
+
+
+
+
+
+
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/emptySrcMissingTests/src/dummy b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/emptySrcMissingTests/src/dummy
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/emptyTests/emptyTests.iml b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/emptyTests/emptyTests.iml
new file mode 100644
index 00000000000..966eb57b22c
--- /dev/null
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/emptyTests/emptyTests.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/emptyTests/test/dummy b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/emptyTests/test/dummy
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/kotlinProject.iml b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/kotlinProject.iml
new file mode 100644
index 00000000000..5f2d0c9a429
--- /dev/null
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/kotlinProject.iml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/kotlinProject.ipr b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/kotlinProject.ipr
new file mode 100644
index 00000000000..585c3fbb608
--- /dev/null
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/kotlinProject.ipr
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/missingSrc/missingSrc.iml b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/missingSrc/missingSrc.iml
new file mode 100644
index 00000000000..9e63df53537
--- /dev/null
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/missingSrc/missingSrc.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/missingSrcEmptyTests/missingSrcEmptyTests.iml b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/missingSrcEmptyTests/missingSrcEmptyTests.iml
new file mode 100644
index 00000000000..0ab15714c75
--- /dev/null
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/missingSrcEmptyTests/missingSrcEmptyTests.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+ i
+
+
+
+
+
+
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/missingSrcEmptyTests/test/dummy b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/missingSrcEmptyTests/test/dummy
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/missingSrcMissingTests/missingSrcMissingTests.iml b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/missingSrcMissingTests/missingSrcMissingTests.iml
new file mode 100644
index 00000000000..0ab15714c75
--- /dev/null
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/missingSrcMissingTests/missingSrcMissingTests.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+ i
+
+
+
+
+
+
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/missingTests/missingTests.iml b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/missingTests/missingTests.iml
new file mode 100644
index 00000000000..966eb57b22c
--- /dev/null
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/missingTests/missingTests.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/src/Main.kt b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/src/Main.kt
new file mode 100644
index 00000000000..ff9c5e0b940
--- /dev/null
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/src/Main.kt
@@ -0,0 +1,4 @@
+fun main() {
+ srcEmptyTestsSrc()
+ srcMissingTestsSrc()
+}
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/srcEmptyTests/src/SrcEmptyTests.kt b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/srcEmptyTests/src/SrcEmptyTests.kt
new file mode 100644
index 00000000000..cc763116f77
--- /dev/null
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/srcEmptyTests/src/SrcEmptyTests.kt
@@ -0,0 +1 @@
+fun srcEmptyTestsSrc() {}
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/srcEmptyTests/srcEmptyTests.iml b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/srcEmptyTests/srcEmptyTests.iml
new file mode 100644
index 00000000000..0ab15714c75
--- /dev/null
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/srcEmptyTests/srcEmptyTests.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+ i
+
+
+
+
+
+
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/srcEmptyTests/test/dummy b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/srcEmptyTests/test/dummy
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/srcMissingTests/src/SrcMissingTests.kt b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/srcMissingTests/src/SrcMissingTests.kt
new file mode 100644
index 00000000000..c7d5b4972fc
--- /dev/null
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/srcMissingTests/src/SrcMissingTests.kt
@@ -0,0 +1 @@
+fun srcMissingTestsSrc() {}
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/srcMissingTests/srcMissingTests.iml b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/srcMissingTests/srcMissingTests.iml
new file mode 100644
index 00000000000..0ab15714c75
--- /dev/null
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/srcMissingTests/srcMissingTests.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+ i
+
+
+
+
+
+
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/test/MainTest.kt b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/test/MainTest.kt
new file mode 100644
index 00000000000..61c73ddab94
--- /dev/null
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/test/MainTest.kt
@@ -0,0 +1,4 @@
+fun test() {
+ testsEmptySrcTest()
+ testsMissingSrcTest()
+}
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/testsEmptySrc/src/dummy b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/testsEmptySrc/src/dummy
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/testsEmptySrc/test/TestsEmptySrc.kt b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/testsEmptySrc/test/TestsEmptySrc.kt
new file mode 100644
index 00000000000..39589622fc5
--- /dev/null
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/testsEmptySrc/test/TestsEmptySrc.kt
@@ -0,0 +1 @@
+fun testsEmptySrcTest() {}
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/testsEmptySrc/testsEmptySrc.iml b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/testsEmptySrc/testsEmptySrc.iml
new file mode 100644
index 00000000000..0ab15714c75
--- /dev/null
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/testsEmptySrc/testsEmptySrc.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+ i
+
+
+
+
+
+
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/testsMissingSrc/test/TestsMissingSrc.kt b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/testsMissingSrc/test/TestsMissingSrc.kt
new file mode 100644
index 00000000000..f2d092bab0c
--- /dev/null
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/testsMissingSrc/test/TestsMissingSrc.kt
@@ -0,0 +1 @@
+fun testsMissingSrcTest() {}
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/testsMissingSrc/testsMissingSrc.iml b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/testsMissingSrc/testsMissingSrc.iml
new file mode 100644
index 00000000000..0ab15714c75
--- /dev/null
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithEmptyDependencies/testsMissingSrc/testsMissingSrc.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+ i
+
+
+
+
+
+
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithTestsAndTestAndSrcModuleDependency/src/Main.kt b/jps-plugin/testData/general/KotlinJavaScriptProjectWithTestsAndTestAndSrcModuleDependency/src/Main.kt
index 5816452a2df..d4f0711d3f5 100644
--- a/jps-plugin/testData/general/KotlinJavaScriptProjectWithTestsAndTestAndSrcModuleDependency/src/Main.kt
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithTestsAndTestAndSrcModuleDependency/src/Main.kt
@@ -1,3 +1,7 @@
+import src.*
+import test.*
+
fun main() {
srcAndTests()
+ ambiguous()
}
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithTestsAndTestAndSrcModuleDependency/srcAndTests/src/SrcAndTests.kt b/jps-plugin/testData/general/KotlinJavaScriptProjectWithTestsAndTestAndSrcModuleDependency/srcAndTests/src/SrcAndTests.kt
index 4770f151401..6bee19ef6ee 100644
--- a/jps-plugin/testData/general/KotlinJavaScriptProjectWithTestsAndTestAndSrcModuleDependency/srcAndTests/src/SrcAndTests.kt
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithTestsAndTestAndSrcModuleDependency/srcAndTests/src/SrcAndTests.kt
@@ -1 +1,5 @@
+package src
+
fun srcAndTests() {}
+
+fun ambiguous() {}
\ No newline at end of file
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithTestsAndTestAndSrcModuleDependency/srcAndTests/src/test.kt b/jps-plugin/testData/general/KotlinJavaScriptProjectWithTestsAndTestAndSrcModuleDependency/srcAndTests/src/test.kt
new file mode 100644
index 00000000000..b7533d96c37
--- /dev/null
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithTestsAndTestAndSrcModuleDependency/srcAndTests/src/test.kt
@@ -0,0 +1,3 @@
+package test
+
+private fun dummy() {}
\ No newline at end of file
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithTestsAndTestAndSrcModuleDependency/srcAndTests/tests/SrcAndTestsTests.kt b/jps-plugin/testData/general/KotlinJavaScriptProjectWithTestsAndTestAndSrcModuleDependency/srcAndTests/tests/SrcAndTestsTests.kt
index dcdc8f6d32a..7b7f50ed9b5 100644
--- a/jps-plugin/testData/general/KotlinJavaScriptProjectWithTestsAndTestAndSrcModuleDependency/srcAndTests/tests/SrcAndTestsTests.kt
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithTestsAndTestAndSrcModuleDependency/srcAndTests/tests/SrcAndTestsTests.kt
@@ -1,3 +1,9 @@
+package test
+
+import src.srcAndTests
+
fun testSrcAndTests() {
srcAndTests()
}
+
+fun ambiguous() {}
\ No newline at end of file
diff --git a/jps-plugin/testData/general/KotlinJavaScriptProjectWithTestsAndTestAndSrcModuleDependency/tests/MainTests.kt b/jps-plugin/testData/general/KotlinJavaScriptProjectWithTestsAndTestAndSrcModuleDependency/tests/MainTests.kt
index 2035cec6386..a4442b1ed71 100644
--- a/jps-plugin/testData/general/KotlinJavaScriptProjectWithTestsAndTestAndSrcModuleDependency/tests/MainTests.kt
+++ b/jps-plugin/testData/general/KotlinJavaScriptProjectWithTestsAndTestAndSrcModuleDependency/tests/MainTests.kt
@@ -1,3 +1,6 @@
+import src.*
+import test.*
+
fun testMain() {
main()
srcAndTests()