From b1e47b4aa5e7fe77f73d5252cc03767eec550eb8 Mon Sep 17 00:00:00 2001 From: Louis Jacomet Date: Thu, 12 Sep 2019 16:00:09 +0200 Subject: [PATCH] Add missing dependency to embedded kotlin * kotlin-stdlib now depends on kotlin-stdlib-common, this was not reflected in the setup of the embedded kotlin repo. * A way to experience this issue was with locking on a kotlin-dsl project. Fixes #10697 --- .../dsl/support/EmbeddedKotlinProviderTest.kt | 22 +++++++++++++++++++ .../dsl/support/EmbeddedKotlinProvider.kt | 5 +++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/subprojects/kotlin-dsl/src/integTest/kotlin/org/gradle/kotlin/dsl/support/EmbeddedKotlinProviderTest.kt b/subprojects/kotlin-dsl/src/integTest/kotlin/org/gradle/kotlin/dsl/support/EmbeddedKotlinProviderTest.kt index b48d44e5298e..773767554a35 100644 --- a/subprojects/kotlin-dsl/src/integTest/kotlin/org/gradle/kotlin/dsl/support/EmbeddedKotlinProviderTest.kt +++ b/subprojects/kotlin-dsl/src/integTest/kotlin/org/gradle/kotlin/dsl/support/EmbeddedKotlinProviderTest.kt @@ -74,4 +74,26 @@ class EmbeddedKotlinProviderTest : AbstractKotlinIntegrationTest() { assertThat(result.error, containsString("Could not find org.jetbrains.kotlin:kotlin-compiler-embeddable:1.0")) } + + @Test + fun `embedded kotlin is compatible with locking because it properly reflects the dependency tree`() { + withBuildScript(""" + ${scriptWithKotlinDslPlugin()} + + dependencyLocking { + lockAllConfigurations() + } + """) + + withFile("src/main/kotlin/test/Test.kt", """ + + package test + + val test = true + + """) + build("dependencies", "--configuration", "compileClasspath", "--write-locks") + + build("compileKotlin") + } } diff --git a/subprojects/kotlin-dsl/src/main/kotlin/org/gradle/kotlin/dsl/support/EmbeddedKotlinProvider.kt b/subprojects/kotlin-dsl/src/main/kotlin/org/gradle/kotlin/dsl/support/EmbeddedKotlinProvider.kt index e7c7b682dc92..8f4dc80edb70 100644 --- a/subprojects/kotlin-dsl/src/main/kotlin/org/gradle/kotlin/dsl/support/EmbeddedKotlinProvider.kt +++ b/subprojects/kotlin-dsl/src/main/kotlin/org/gradle/kotlin/dsl/support/EmbeddedKotlinProvider.kt @@ -154,7 +154,8 @@ val embeddedModules: List by lazy { // TODO:pm could be generated at build time val annotations = EmbeddedModule("org.jetbrains", "annotations", "13.0") val trove4j = EmbeddedModule("org.jetbrains.intellij.deps", "trove4j", "1.0.20181211") - val stdlib = embeddedKotlin("stdlib", listOf(annotations)) + val stdlibCommon = embeddedKotlin("stdlib-common") + val stdlib = embeddedKotlin("stdlib", listOf(stdlibCommon, annotations)) val stdlibJdk7 = embeddedKotlin("stdlib-jdk7", listOf(stdlib)) val stdlibJdk8 = embeddedKotlin("stdlib-jdk8", listOf(stdlibJdk7)) val reflect = embeddedKotlin("reflect", listOf(stdlib)) @@ -169,7 +170,7 @@ val embeddedModules: List by lazy { val samWithReceiverCompilerPlugin = embeddedKotlin("sam-with-receiver-compiler-plugin") listOf( annotations, trove4j, - stdlib, stdlibJdk7, stdlibJdk8, + stdlibCommon, stdlib, stdlibJdk7, stdlibJdk8, reflect, compilerEmbeddable, scriptingCompilerEmbeddable,