Gradle: do not set fragments/fragmentRefines for non-MPP
Otherwise kapt-generated Kotlin sources do not end up in any module, which causes an error in KT-58301. The error is only happening with K2 because fragments/fragmentRefines arguments are checked more strictly than commonSources used in K1. #KT-58301 Fixed
This commit is contained in:
committed by
Space Team
parent
b72b1ad7cd
commit
926aa07ca1
+40
@@ -1180,4 +1180,44 @@ open class Kapt3IT : Kapt3BaseIT() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DisplayName("Kapt-generated Kotlin sources can be used in Kotlin")
|
||||||
|
@GradleTest
|
||||||
|
internal fun useGeneratedKotlinSource(gradleVersion: GradleVersion) {
|
||||||
|
project("useGeneratedKotlinSource".withPrefix, gradleVersion) {
|
||||||
|
build("build") {
|
||||||
|
assertKaptSuccessful()
|
||||||
|
assertTasksExecuted(":kaptGenerateStubsKotlin", ":kaptKotlin", ":compileKotlin")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@DisplayName("Kapt-generated Kotlin sources can be used in Kotlin with languageVersion = 2.0")
|
||||||
|
@GradleTest
|
||||||
|
internal fun useGeneratedKotlinSourceK2(gradleVersion: GradleVersion) {
|
||||||
|
project("useGeneratedKotlinSource".withPrefix, gradleVersion) {
|
||||||
|
buildGradle.appendText(
|
||||||
|
"""
|
||||||
|
|tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
|
||||||
|
| compilerOptions {
|
||||||
|
| freeCompilerArgs.addAll([
|
||||||
|
| "-Xuse-fir-ic",
|
||||||
|
| "-Xuse-fir-lt"
|
||||||
|
| ])
|
||||||
|
| }
|
||||||
|
| kotlinOptions {
|
||||||
|
| languageVersion = "2.0"
|
||||||
|
| }
|
||||||
|
|}
|
||||||
|
|
|
||||||
|
|compileKotlin.kotlinOptions.allWarningsAsErrors = false
|
||||||
|
""".trimMargin()
|
||||||
|
)
|
||||||
|
build("build") {
|
||||||
|
assertKaptSuccessful()
|
||||||
|
assertTasksExecuted(":kaptGenerateStubsKotlin", ":kaptKotlin", ":compileKotlin")
|
||||||
|
assertOutputContains("Falling back to 1.9.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+17
@@ -0,0 +1,17 @@
|
|||||||
|
plugins {
|
||||||
|
id "java"
|
||||||
|
id "org.jetbrains.kotlin.jvm"
|
||||||
|
id "org.jetbrains.kotlin.kapt"
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenLocal()
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation(project(":processor"))
|
||||||
|
kapt(project(":processor"))
|
||||||
|
}
|
||||||
|
|
||||||
|
compileKotlin.kotlinOptions.allWarningsAsErrors = true
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
plugins {
|
||||||
|
id "java"
|
||||||
|
id "org.jetbrains.kotlin.jvm"
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenLocal()
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
compileKotlin.kotlinOptions.allWarningsAsErrors = true
|
||||||
+30
@@ -0,0 +1,30 @@
|
|||||||
|
package processor
|
||||||
|
|
||||||
|
import javax.annotation.processing.AbstractProcessor
|
||||||
|
import javax.annotation.processing.RoundEnvironment
|
||||||
|
import javax.lang.model.SourceVersion
|
||||||
|
import javax.lang.model.element.TypeElement
|
||||||
|
import javax.tools.StandardLocation
|
||||||
|
|
||||||
|
class GenerateKotlinSourceFile : AbstractProcessor() {
|
||||||
|
override fun process(annotations: Set<TypeElement>, roundEnv: RoundEnvironment): Boolean {
|
||||||
|
val annotation = annotations.singleOrNull() ?: return true
|
||||||
|
for (type in roundEnv.getElementsAnnotatedWith(annotation)) {
|
||||||
|
if (type !is TypeElement) continue
|
||||||
|
val packageName = processingEnv.elementUtils.getPackageOf(type).qualifiedName.toString()
|
||||||
|
val simpleName = type.simpleName.toString() + "Generated"
|
||||||
|
val file = processingEnv.filer.createResource(StandardLocation.SOURCE_OUTPUT, "example", "$simpleName.kt", type)
|
||||||
|
file.openWriter().use { writer ->
|
||||||
|
writer.write("package $packageName\n\nclass $simpleName")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getSupportedSourceVersion(): SourceVersion =
|
||||||
|
SourceVersion.RELEASE_6
|
||||||
|
|
||||||
|
override fun getSupportedAnnotationTypes(): Set<String> =
|
||||||
|
setOf("example.Generate")
|
||||||
|
}
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
processor.GenerateKotlinSourceFile
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
include "processor"
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
package example
|
||||||
|
|
||||||
|
annotation class Generate
|
||||||
|
|
||||||
|
@Generate
|
||||||
|
class TestClass
|
||||||
|
|
||||||
|
fun testClass(): TestClassGenerated = TestClassGenerated()
|
||||||
+1
-1
@@ -230,7 +230,7 @@ abstract class KotlinCompile @Inject constructor(
|
|||||||
|
|
||||||
args.javaPackagePrefix = javaPackagePrefix
|
args.javaPackagePrefix = javaPackagePrefix
|
||||||
|
|
||||||
if (compilerOptions.usesK2.get()) {
|
if (compilerOptions.usesK2.get() && multiPlatformEnabled.get()) {
|
||||||
args.fragments = multiplatformStructure.fragmentsCompilerArgs
|
args.fragments = multiplatformStructure.fragmentsCompilerArgs
|
||||||
args.fragmentRefines = multiplatformStructure.fragmentRefinesCompilerArgs
|
args.fragmentRefines = multiplatformStructure.fragmentRefinesCompilerArgs
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user