From c1dbfee2a95b7dd32e284193689bc29354c15952 Mon Sep 17 00:00:00 2001 From: Zalim Bashorov Date: Wed, 13 Jan 2016 14:25:23 +0300 Subject: [PATCH] Don't fail when create IncrementalCacheImpl for target without output directory, and fail when try to use this info instead. #KT-10505 Fixed --- .../jps/incremental/IncrementalCacheImpl.kt | 2 +- .../kotlin/jps/build/KotlinJpsBuildTest.kt | 4 ++++ .../kotlinProject.ipr | 15 +++++++++++++++ .../produciton_module/produciton_module.iml | 14 ++++++++++++++ .../produciton_module/src/foo.kt | 3 +++ .../test_module/test/test.kt | 3 +++ .../test_module/test_module.iml | 15 +++++++++++++++ 7 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 jps-plugin/testData/general/KotlinProjectWithEmptyOutputDirInSomeModules/kotlinProject.ipr create mode 100644 jps-plugin/testData/general/KotlinProjectWithEmptyOutputDirInSomeModules/produciton_module/produciton_module.iml create mode 100644 jps-plugin/testData/general/KotlinProjectWithEmptyOutputDirInSomeModules/produciton_module/src/foo.kt create mode 100644 jps-plugin/testData/general/KotlinProjectWithEmptyOutputDirInSomeModules/test_module/test/test.kt create mode 100644 jps-plugin/testData/general/KotlinProjectWithEmptyOutputDirInSomeModules/test_module/test_module.iml diff --git a/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCacheImpl.kt b/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCacheImpl.kt index ce0c8bb626e..5a7efdc5d5b 100644 --- a/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCacheImpl.kt +++ b/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCacheImpl.kt @@ -103,7 +103,7 @@ class IncrementalCacheImpl( private val supertypesMap = registerExperimentalMap(SupertypesMap(SUPERTYPES.storageFile)) private val dependents = arrayListOf() - private val outputDir = requireNotNull(target.outputDir) { "Target is expected to have output directory: $target" } + private val outputDir by lazy(LazyThreadSafetyMode.NONE) { requireNotNull(target.outputDir) { "Target is expected to have output directory: $target" } } private val dependentsWithThis: Sequence get() = sequenceOf(this).plus(dependents.asSequence()) diff --git a/jps-plugin/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt b/jps-plugin/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt index 545ab9e091c..04964f65aad 100644 --- a/jps-plugin/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt +++ b/jps-plugin/test/org/jetbrains/kotlin/jps/build/KotlinJpsBuildTest.kt @@ -732,6 +732,10 @@ class KotlinJpsBuildTest : AbstractKotlinJpsBuildTestCase() { doTest() } + fun testKotlinProjectWithEmptyOutputDirInSomeModules() { + doTest() + } + private fun BuildResult.checkErrors() { val actualErrors = getMessages(BuildMessage.Kind.ERROR) .map { it as CompilerMessage } diff --git a/jps-plugin/testData/general/KotlinProjectWithEmptyOutputDirInSomeModules/kotlinProject.ipr b/jps-plugin/testData/general/KotlinProjectWithEmptyOutputDirInSomeModules/kotlinProject.ipr new file mode 100644 index 00000000000..7dc391eaceb --- /dev/null +++ b/jps-plugin/testData/general/KotlinProjectWithEmptyOutputDirInSomeModules/kotlinProject.ipr @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + diff --git a/jps-plugin/testData/general/KotlinProjectWithEmptyOutputDirInSomeModules/produciton_module/produciton_module.iml b/jps-plugin/testData/general/KotlinProjectWithEmptyOutputDirInSomeModules/produciton_module/produciton_module.iml new file mode 100644 index 00000000000..786d75db373 --- /dev/null +++ b/jps-plugin/testData/general/KotlinProjectWithEmptyOutputDirInSomeModules/produciton_module/produciton_module.iml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/jps-plugin/testData/general/KotlinProjectWithEmptyOutputDirInSomeModules/produciton_module/src/foo.kt b/jps-plugin/testData/general/KotlinProjectWithEmptyOutputDirInSomeModules/produciton_module/src/foo.kt new file mode 100644 index 00000000000..f3b2ebc5254 --- /dev/null +++ b/jps-plugin/testData/general/KotlinProjectWithEmptyOutputDirInSomeModules/produciton_module/src/foo.kt @@ -0,0 +1,3 @@ +fun foo() { + +} diff --git a/jps-plugin/testData/general/KotlinProjectWithEmptyOutputDirInSomeModules/test_module/test/test.kt b/jps-plugin/testData/general/KotlinProjectWithEmptyOutputDirInSomeModules/test_module/test/test.kt new file mode 100644 index 00000000000..798f616299e --- /dev/null +++ b/jps-plugin/testData/general/KotlinProjectWithEmptyOutputDirInSomeModules/test_module/test/test.kt @@ -0,0 +1,3 @@ +fun test() { + foo() +} diff --git a/jps-plugin/testData/general/KotlinProjectWithEmptyOutputDirInSomeModules/test_module/test_module.iml b/jps-plugin/testData/general/KotlinProjectWithEmptyOutputDirInSomeModules/test_module/test_module.iml new file mode 100644 index 00000000000..62cd41c3ccb --- /dev/null +++ b/jps-plugin/testData/general/KotlinProjectWithEmptyOutputDirInSomeModules/test_module/test_module.iml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + +