From 2065f8e6fe443c7dbfc1a625b917705f6cf8730d Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Fri, 22 Jun 2018 04:12:25 +0300 Subject: [PATCH] Fix inter-project IC for android->non-android dependency #KT-24832 fixed --- .../multiproject/ModulesApiHistory.kt | 9 +++++++ .../ModulesApiHistoryAndroidTest.kt | 10 ++++--- .../AbstractKotlinAndroidGradleTests.kt | 26 +++++++++++++++++++ .../app/build.gradle | 23 ++++++++++++++++ .../app/src/main/AndroidManifest.xml | 6 +++++ .../src/main/kotlin/com/example/AppDummy.kt | 8 ++++++ .../main/kotlin/com/example/KotlinActivity.kt | 10 +++++++ .../kotlin/com/example/useLibAndroidUtil.kt | 9 +++++++ .../main/kotlin/com/example/useLibJvmUtil.kt | 9 +++++++ .../build.gradle | 19 ++++++++++++++ .../libAndroid/build.gradle | 20 ++++++++++++++ .../libAndroid/src/main/AndroidManifest.xml | 3 +++ .../kotlin/com/example/LibAndroidDummy.kt | 8 ++++++ .../main/kotlin/com/example/libAndroidUtil.kt | 9 +++++++ .../libJvmClassesOnly/build.gradle | 5 ++++ .../libJvmClassesOnly/readme.md | 2 ++ .../main/kotlin/com/example/LibJvmDummy.kt | 8 ++++++ .../src/main/kotlin/com/example/LibJvmUtil.kt | 13 ++++++++++ .../settings.gradle | 1 + 19 files changed, 195 insertions(+), 3 deletions(-) create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/build.gradle create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/src/main/AndroidManifest.xml create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/src/main/kotlin/com/example/AppDummy.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/src/main/kotlin/com/example/KotlinActivity.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/src/main/kotlin/com/example/useLibAndroidUtil.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/src/main/kotlin/com/example/useLibJvmUtil.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/build.gradle create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libAndroid/build.gradle create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libAndroid/src/main/AndroidManifest.xml create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libAndroid/src/main/kotlin/com/example/LibAndroidDummy.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libAndroid/src/main/kotlin/com/example/libAndroidUtil.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libJvmClassesOnly/build.gradle create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libJvmClassesOnly/readme.md create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libJvmClassesOnly/src/main/kotlin/com/example/LibJvmDummy.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libJvmClassesOnly/src/main/kotlin/com/example/LibJvmUtil.kt create mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/settings.gradle diff --git a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/multiproject/ModulesApiHistory.kt b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/multiproject/ModulesApiHistory.kt index 050da69bc60..67dd309fc76 100644 --- a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/multiproject/ModulesApiHistory.kt +++ b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/multiproject/ModulesApiHistory.kt @@ -110,6 +110,15 @@ open class ModulesApiHistoryJvm(protected val modulesInfo: IncrementalModuleInfo } class ModulesApiHistoryAndroid(modulesInfo: IncrementalModuleInfo) : ModulesApiHistoryJvm(modulesInfo) { + private val delegate = ModulesApiHistoryJvm(modulesInfo) + + override fun historyFilesForChangedFiles(changedFiles: Set): Either> { + val historyFromDelegate = delegate.historyFilesForChangedFiles(changedFiles) + if (historyFromDelegate is Either.Success>) return historyFromDelegate + + return super.historyFilesForChangedFiles(changedFiles) + } + override fun getBuildHistoryFilesForJar(jar: File): Either> { // Module detection is expensive, so we don't don it for jars outside of project dir if (!projectRootPath.isParentOf(jar)) return Either.Error("Non-project jar is modified $jar") diff --git a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/multiproject/ModulesApiHistoryAndroidTest.kt b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/multiproject/ModulesApiHistoryAndroidTest.kt index c292ef2e643..600b784510d 100644 --- a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/multiproject/ModulesApiHistoryAndroidTest.kt +++ b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/multiproject/ModulesApiHistoryAndroidTest.kt @@ -24,8 +24,10 @@ class ModulesApiHistoryAndroidTest { val tmpFolder = TemporaryFolder() private lateinit var appRoot: File + private lateinit var appKotlinDestination: File private lateinit var appHistory: File private lateinit var libRoot: File + private lateinit var libKotlinDestination: File private lateinit var libHistory: File private lateinit var androidHistory: ModulesApiHistoryAndroid @@ -36,23 +38,25 @@ class ModulesApiHistoryAndroidTest { appRoot = projectRoot.resolve("app") appHistory = appRoot.resolve("build/tmp/kotlin/app_history.bin") + appKotlinDestination = appRoot.resolve("build/tmp/kotlin-classes").apply { mkdirs() } val appEntry = IncrementalModuleEntry(":app", "app", appRoot.resolve("build"), appHistory) appRoot.resolve("build/intermediates/classes/meta-inf/").apply { - mkdirs(); + mkdirs() resolve("app.kotlin_module").createNewFile() } libRoot = projectRoot.resolve("lib") libHistory = libRoot.resolve("lib/build/tmp/kotlin/lib_history.bin") + libKotlinDestination = libRoot.resolve("build/tmp/kotlin-classes").apply { mkdirs() } val libEntry = IncrementalModuleEntry(":lib", "lib", libRoot.resolve("build"), libHistory) libRoot.resolve("build/intermediates/classes/meta-inf/").apply { - mkdirs(); + mkdirs() resolve("lib.kotlin_module").createNewFile() } val info = IncrementalModuleInfo( projectRoot = projectRoot, - dirToModule = mapOf(appRoot to appEntry, libRoot to libEntry), + dirToModule = mapOf(appKotlinDestination to appEntry, libKotlinDestination to libEntry), nameToModules = mapOf("app" to setOf(appEntry), "lib" to setOf(libEntry)), jarToClassListFile = mapOf() ) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt index d3fc60dfe5f..c919612c152 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt @@ -235,6 +235,32 @@ fun getSomething() = 10 } } + @Test + fun testMultiModuleICNonAndroidModuleIsChanged() { + val project = Project("AndroidIncrementalMultiModule", gradleVersion) + val options = defaultBuildOptions().copy(incremental = true, kotlinDaemonDebugPort = null) + + project.build("assembleDebug", options = options) { + assertSuccessful() + } + + val libAndroidUtilKt = project.projectDir.getFileByName("libAndroidUtil.kt") + libAndroidUtilKt.modify { it.replace("fun libAndroidUtil(): String", "fun libAndroidUtil(): CharSequence") } + project.build("assembleDebug", options = options) { + assertSuccessful() + val affectedSources = project.projectDir.getFilesByNames("libAndroidUtil.kt", "useLibAndroidUtil.kt") + assertCompiledKotlinSources(project.relativize(affectedSources), weakTesting = false) + } + + val libJvmUtilKt = project.projectDir.getFileByName("LibJvmUtil.kt") + libJvmUtilKt.modify { it.replace("fun libJvmUtil(): String", "fun libJvmUtil(): CharSequence") } + project.build("assembleDebug", options = options) { + assertSuccessful() + val affectedSources = project.projectDir.getFilesByNames("LibJvmUtil.kt", "useLibJvmUtil.kt") + assertCompiledKotlinSources(project.relativize(affectedSources), weakTesting = false) + } + } + @Test fun testIncrementalBuildWithNoChanges() { val project = Project("AndroidIncrementalSingleModuleProject", gradleVersion) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/build.gradle new file mode 100644 index 00000000000..a5d6f20b210 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/build.gradle @@ -0,0 +1,23 @@ +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' + +android { + compileSdkVersion 23 + buildToolsVersion "25.0.2" + + defaultConfig { + applicationId "com.example" + minSdkVersion 14 + targetSdkVersion 23 + versionCode 1 + versionName "1.0" + } + buildTypes.release.minifyEnabled = false + lintOptions.abortOnError = false +} + +dependencies { + compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + compile project(":libJvmClassesOnly") + compile project(":libAndroid") +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/src/main/AndroidManifest.xml b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000000..d193b52ecd8 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/src/main/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/src/main/kotlin/com/example/AppDummy.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/src/main/kotlin/com/example/AppDummy.kt new file mode 100644 index 00000000000..2610a37630e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/src/main/kotlin/com/example/AppDummy.kt @@ -0,0 +1,8 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package com.example + +class AppDummy \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/src/main/kotlin/com/example/KotlinActivity.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/src/main/kotlin/com/example/KotlinActivity.kt new file mode 100644 index 00000000000..f38b86c000a --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/src/main/kotlin/com/example/KotlinActivity.kt @@ -0,0 +1,10 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package com.example + +import android.app.Activity + +open class KotlinActivity : Activity() \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/src/main/kotlin/com/example/useLibAndroidUtil.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/src/main/kotlin/com/example/useLibAndroidUtil.kt new file mode 100644 index 00000000000..915a74cd219 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/src/main/kotlin/com/example/useLibAndroidUtil.kt @@ -0,0 +1,9 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package com.example + +fun useLibAndroidUtil() = + libAndroidUtil() \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/src/main/kotlin/com/example/useLibJvmUtil.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/src/main/kotlin/com/example/useLibJvmUtil.kt new file mode 100644 index 00000000000..187994ec279 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/app/src/main/kotlin/com/example/useLibJvmUtil.kt @@ -0,0 +1,9 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package com.example + +fun useLibJvmUtil() = + LibJvmUtil.libJvmUtil() \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/build.gradle new file mode 100644 index 00000000000..83c04d30ff9 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/build.gradle @@ -0,0 +1,19 @@ +buildscript { + repositories { + mavenLocal() + jcenter() + maven { url 'https://maven.google.com' } + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath('com.android.tools.build:gradle:' + android_tools_version) + } +} + +allprojects { + repositories { + mavenLocal() + jcenter() + maven { url 'https://maven.google.com' } + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libAndroid/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libAndroid/build.gradle new file mode 100644 index 00000000000..87353a02404 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libAndroid/build.gradle @@ -0,0 +1,20 @@ +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' + +android { + compileSdkVersion 23 + buildToolsVersion "25.0.2" + + defaultConfig { + minSdkVersion 14 + targetSdkVersion 23 + versionCode 1 + versionName "1.0" + } + buildTypes.release.minifyEnabled = false + lintOptions.abortOnError = false +} + +dependencies { + compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libAndroid/src/main/AndroidManifest.xml b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libAndroid/src/main/AndroidManifest.xml new file mode 100644 index 00000000000..2f033c81b47 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libAndroid/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + + diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libAndroid/src/main/kotlin/com/example/LibAndroidDummy.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libAndroid/src/main/kotlin/com/example/LibAndroidDummy.kt new file mode 100644 index 00000000000..63af818326b --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libAndroid/src/main/kotlin/com/example/LibAndroidDummy.kt @@ -0,0 +1,8 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package com.example + +class LibAndroidDummy \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libAndroid/src/main/kotlin/com/example/libAndroidUtil.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libAndroid/src/main/kotlin/com/example/libAndroidUtil.kt new file mode 100644 index 00000000000..a55c14bbe6d --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libAndroid/src/main/kotlin/com/example/libAndroidUtil.kt @@ -0,0 +1,9 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package com.example + +fun libAndroidUtil(): String = + "Hello, World" \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libJvmClassesOnly/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libJvmClassesOnly/build.gradle new file mode 100644 index 00000000000..94c8ab22d92 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libJvmClassesOnly/build.gradle @@ -0,0 +1,5 @@ +apply plugin: 'kotlin' + +dependencies { + compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libJvmClassesOnly/readme.md b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libJvmClassesOnly/readme.md new file mode 100644 index 00000000000..c39aab998eb --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libJvmClassesOnly/readme.md @@ -0,0 +1,2 @@ +Currently it is important that this project does not contain any package parts (classes only), +because kotlin_module is not generated in this case. \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libJvmClassesOnly/src/main/kotlin/com/example/LibJvmDummy.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libJvmClassesOnly/src/main/kotlin/com/example/LibJvmDummy.kt new file mode 100644 index 00000000000..c3b146f271f --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libJvmClassesOnly/src/main/kotlin/com/example/LibJvmDummy.kt @@ -0,0 +1,8 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package com.example + +class LibJvmDummy \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libJvmClassesOnly/src/main/kotlin/com/example/LibJvmUtil.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libJvmClassesOnly/src/main/kotlin/com/example/LibJvmUtil.kt new file mode 100644 index 00000000000..bceaca5d46b --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/libJvmClassesOnly/src/main/kotlin/com/example/LibJvmUtil.kt @@ -0,0 +1,13 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package com.example + +class LibJvmUtil { + companion object { + fun libJvmUtil(): String = + "Hello, World" + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/settings.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/settings.gradle new file mode 100644 index 00000000000..d0284695f5c --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIncrementalMultiModule/settings.gradle @@ -0,0 +1 @@ +include ':app', ':libAndroid', ':libJvmClassesOnly'