From 0925e1b497178b78dc67c7a22dc598198be69fe2 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Fri, 29 Jan 2021 20:54:16 +0100 Subject: [PATCH] Enable JVM IR for stdlib/reflect/test libraries Changes in Gradle integration tests are needed because: - in new-mpp-android, kotlin-stdlib-jdk8 is used, and JVM IR generates JDK 8-specific bytecode (invokedynamic). D8 needs to be configured to desugar it with source/target versions set to 1.8, otherwise it reports an error. - in AndroidExtensionsManyVariants and AndroidIcepickProject, D8 fails with assertions enabled if AGP < 4.0.0 is used because of https://issuetracker.google.com/issues/148661132. The tests which use old AGP versions are probably not relevant anymore anyway. Changes in kotlin-stdlib-runtime-merged.txt are caused by a slightly different generation scheme of collection subclasses in JVM IR, and are harmless. (Previous attempt was at 15e978dbd311c2ba78ec32b394c21acde9811ccb.) --- .../kotlin-build-gradle-plugin/src/BuildProperties.kt | 2 -- gradle.properties | 3 --- libraries/commonConfiguration.gradle | 11 ----------- libraries/kotlin.test/junit/build.gradle | 2 -- libraries/kotlin.test/junit5/build.gradle | 2 -- libraries/kotlin.test/jvm/build.gradle | 2 -- libraries/kotlin.test/testng/build.gradle | 2 -- libraries/reflect/api/build.gradle | 2 -- libraries/stdlib/jdk7/build.gradle | 2 -- libraries/stdlib/jdk8/build.gradle | 2 -- libraries/stdlib/jvm/build.gradle | 2 -- .../kotlin-stdlib-runtime-merged.txt | 8 ++++---- libraries/tools/kotlin-annotations-jvm/build.gradle | 2 -- .../AndroidExtensionsManyVariants/gradle.properties | 1 - .../AndroidIcepickProject/gradle.properties | 1 - .../testProject/new-mpp-android/app/build.gradle | 4 ++++ libraries/tools/script-runtime/build.gradle | 2 -- 17 files changed, 8 insertions(+), 42 deletions(-) delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidExtensionsManyVariants/gradle.properties delete mode 100644 libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIcepickProject/gradle.properties diff --git a/dependencies/kotlin-build-gradle-plugin/src/BuildProperties.kt b/dependencies/kotlin-build-gradle-plugin/src/BuildProperties.kt index c3f05b0f74e..47c244dbe88 100644 --- a/dependencies/kotlin-build-gradle-plugin/src/BuildProperties.kt +++ b/dependencies/kotlin-build-gradle-plugin/src/BuildProperties.kt @@ -80,8 +80,6 @@ class KotlinBuildProperties( val localBootstrapPath: String? = getOrNull("bootstrap.local.path") as String? - val useIRForLibraries: Boolean = getBoolean("kotlin.build.useIRForLibraries") - val useFir: Boolean = getBoolean("kotlin.build.useFir") val useFirForLibraries: Boolean = getBoolean("kotlin.build.useFirForLibraries") diff --git a/gradle.properties b/gradle.properties index a847afd2207..74e6c451f07 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,9 +7,6 @@ org.gradle.java.installations.fromEnv=JDK_16,JDK_17,JDK_18,JDK_9,JDK_10,JDK_11,J cacheRedirectorEnabled=true defaultSnapshotVersion=1.6.255-SNAPSHOT -# Enable JVM IR backend for kotlin-stdlib, kotlin-reflect, kotlin-test. -#kotlin.build.useIRForLibraries=true - #maven.repository.mirror=http://repository.jetbrains.com/remote-repos/ #bootstrap.kotlin.repo=https://maven.pkg.jetbrains.space/kotlin/p/kotlin/bootstrap #bootstrap.kotlin.version=1.1.50-dev-1451 diff --git a/libraries/commonConfiguration.gradle b/libraries/commonConfiguration.gradle index 1a091687263..3a9121a18bd 100644 --- a/libraries/commonConfiguration.gradle +++ b/libraries/commonConfiguration.gradle @@ -64,17 +64,6 @@ ext.configurePluginMarkers = { Project project, withEmptyJars = true -> PluginMarkersKt.publishPluginMarkers(project, withEmptyJars) } -ext.configureJvmIrBackend = { Project project -> - project.tasks.withType(KotlinCompile.class) { task -> - task.kotlinOptions { - if (!project.kotlinBuildProperties.useIRForLibraries) { - useIR = false - freeCompilerArgs += "-Xuse-old-backend" - } - } - } -} - allprojects { project -> project.ext.configureSourcesJar = { lambda = {} -> ArtifactsKt.sourcesJar(project) { task -> diff --git a/libraries/kotlin.test/junit/build.gradle b/libraries/kotlin.test/junit/build.gradle index dc5d04b6304..d1f8ce9495a 100644 --- a/libraries/kotlin.test/junit/build.gradle +++ b/libraries/kotlin.test/junit/build.gradle @@ -44,8 +44,6 @@ compileTestKotlin { ] } -configureJvmIrBackend(project) - if (includeJava9) { LibrariesCommon.configureJava9Compilation(project, 'kotlin.test.junit') } diff --git a/libraries/kotlin.test/junit5/build.gradle b/libraries/kotlin.test/junit5/build.gradle index cdc53a7c2a1..1598be8a296 100644 --- a/libraries/kotlin.test/junit5/build.gradle +++ b/libraries/kotlin.test/junit5/build.gradle @@ -43,8 +43,6 @@ compileTestKotlin { ] } -configureJvmIrBackend(project) - if (includeJava9) { LibrariesCommon.configureJava9Compilation(project, 'kotlin.test.junit5') } diff --git a/libraries/kotlin.test/jvm/build.gradle b/libraries/kotlin.test/jvm/build.gradle index 9cc61e0ee04..be2557a43c7 100644 --- a/libraries/kotlin.test/jvm/build.gradle +++ b/libraries/kotlin.test/jvm/build.gradle @@ -57,8 +57,6 @@ compileTestKotlin { ] } -configureJvmIrBackend(project) - if (includeJava9) { LibrariesCommon.configureJava9Compilation(project, 'kotlin.test') } diff --git a/libraries/kotlin.test/testng/build.gradle b/libraries/kotlin.test/testng/build.gradle index ec1da9d9a24..7e2ff6bb38e 100644 --- a/libraries/kotlin.test/testng/build.gradle +++ b/libraries/kotlin.test/testng/build.gradle @@ -47,8 +47,6 @@ compileTestKotlin { ] } -configureJvmIrBackend(project) - if (includeJava9) { LibrariesCommon.configureJava9Compilation(project, 'kotlin.test.testng') } diff --git a/libraries/reflect/api/build.gradle b/libraries/reflect/api/build.gradle index 495c3f7bd31..0f6de39343c 100644 --- a/libraries/reflect/api/build.gradle +++ b/libraries/reflect/api/build.gradle @@ -54,8 +54,6 @@ compileKotlin { } } -configureJvmIrBackend(project) - jar { manifestAttributes(manifest, project, "internal") } diff --git a/libraries/stdlib/jdk7/build.gradle b/libraries/stdlib/jdk7/build.gradle index 3c865f0dd66..3f5948228e3 100644 --- a/libraries/stdlib/jdk7/build.gradle +++ b/libraries/stdlib/jdk7/build.gradle @@ -90,8 +90,6 @@ compileTestKotlin { ] } -configureJvmIrBackend(project) - LibrariesCommon.configureJava9Compilation(project, 'kotlin.stdlib.jdk7') task testJdk6Tests(type: Test) { diff --git a/libraries/stdlib/jdk8/build.gradle b/libraries/stdlib/jdk8/build.gradle index d17292ca17d..d2906441fa7 100644 --- a/libraries/stdlib/jdk8/build.gradle +++ b/libraries/stdlib/jdk8/build.gradle @@ -75,8 +75,6 @@ compileTestKotlin { ] } -configureJvmIrBackend(project) - LibrariesCommon.configureJava9Compilation(project, 'kotlin.stdlib.jdk8') task testJdk6Tests(type: Test) { thisTask -> diff --git a/libraries/stdlib/jvm/build.gradle b/libraries/stdlib/jvm/build.gradle index a2ee2b44947..dc4b6565216 100644 --- a/libraries/stdlib/jvm/build.gradle +++ b/libraries/stdlib/jvm/build.gradle @@ -143,8 +143,6 @@ compileLongRunningTestKotlin { kotlinOptions.freeCompilerArgs += "-Xopt-in=kotlin.ExperimentalStdlibApi" } -configureJvmIrBackend(project) - task longRunningTest(type: Test, dependsOn: longRunningTestClasses) { group = "verification" testClassesDirs = sourceSets.longRunningTest.output.classesDirs diff --git a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt index 99d008a2e7a..a38b1051d3a 100644 --- a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt +++ b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-stdlib-runtime-merged.txt @@ -312,7 +312,7 @@ public final class kotlin/UByteArray : java/util/Collection, kotlin/jvm/internal public fun removeAll (Ljava/util/Collection;)Z public fun retainAll (Ljava/util/Collection;)Z public static final fun set-VurrAj0 ([BIB)V - public final fun size ()I + public synthetic fun size ()I public fun toArray ()[Ljava/lang/Object; public fun toArray ([Ljava/lang/Object;)[Ljava/lang/Object; public fun toString ()Ljava/lang/String; @@ -371,7 +371,7 @@ public final class kotlin/UIntArray : java/util/Collection, kotlin/jvm/internal/ public fun removeAll (Ljava/util/Collection;)Z public fun retainAll (Ljava/util/Collection;)Z public static final fun set-VXSXFK8 ([III)V - public final fun size ()I + public synthetic fun size ()I public fun toArray ()[Ljava/lang/Object; public fun toArray ([Ljava/lang/Object;)[Ljava/lang/Object; public fun toString ()Ljava/lang/String; @@ -430,7 +430,7 @@ public final class kotlin/ULongArray : java/util/Collection, kotlin/jvm/internal public fun removeAll (Ljava/util/Collection;)Z public fun retainAll (Ljava/util/Collection;)Z public static final fun set-k8EXiF4 ([JIJ)V - public final fun size ()I + public synthetic fun size ()I public fun toArray ()[Ljava/lang/Object; public fun toArray ([Ljava/lang/Object;)[Ljava/lang/Object; public fun toString ()Ljava/lang/String; @@ -489,7 +489,7 @@ public final class kotlin/UShortArray : java/util/Collection, kotlin/jvm/interna public fun removeAll (Ljava/util/Collection;)Z public fun retainAll (Ljava/util/Collection;)Z public static final fun set-01HTLdE ([SIS)V - public final fun size ()I + public synthetic fun size ()I public fun toArray ()[Ljava/lang/Object; public fun toArray ([Ljava/lang/Object;)[Ljava/lang/Object; public fun toString ()Ljava/lang/String; diff --git a/libraries/tools/kotlin-annotations-jvm/build.gradle b/libraries/tools/kotlin-annotations-jvm/build.gradle index 28c98b39240..ff7b0eff199 100644 --- a/libraries/tools/kotlin-annotations-jvm/build.gradle +++ b/libraries/tools/kotlin-annotations-jvm/build.gradle @@ -27,5 +27,3 @@ compileKotlin { ] kotlinOptions.moduleName = project.name } - -configureJvmIrBackend(project) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidExtensionsManyVariants/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidExtensionsManyVariants/gradle.properties deleted file mode 100644 index 5fcc74643cf..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidExtensionsManyVariants/gradle.properties +++ /dev/null @@ -1 +0,0 @@ -org.gradle.jvmargs=-ea -XX:MaxPermSize=512m \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIcepickProject/gradle.properties b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIcepickProject/gradle.properties deleted file mode 100644 index 5fcc74643cf..00000000000 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/AndroidIcepickProject/gradle.properties +++ /dev/null @@ -1 +0,0 @@ -org.gradle.jvmargs=-ea -XX:MaxPermSize=512m \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-android/app/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-android/app/build.gradle index 19fae98ebd1..42e2c8e91a2 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-android/app/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/new-mpp-android/app/build.gradle @@ -21,6 +21,10 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + compileOptions { + sourceCompatibility 1.8 + targetCompatibility 1.8 + } } dependencies { diff --git a/libraries/tools/script-runtime/build.gradle b/libraries/tools/script-runtime/build.gradle index 67db396f446..46a031983c8 100644 --- a/libraries/tools/script-runtime/build.gradle +++ b/libraries/tools/script-runtime/build.gradle @@ -40,5 +40,3 @@ compileKotlin { ] kotlinOptions.moduleName = project.name } - -configureJvmIrBackend(project)