@@ -18,9 +18,13 @@ import org.jetbrains.kotlin.gradle.plugin.*
1818import org.jetbrains.kotlin.gradle.plugin.mpp.*
1919import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.*
2020import org.jetbrains.kotlin.gradle.targets.jvm.*
21+ import org.jetbrains.kotlin.gradle.tasks.*
2122import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
2223import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
24+ import org.jetbrains.kotlin.tooling.core.*
2325import java.io.*
26+ import kotlin.reflect.*
27+ import kotlin.reflect.full.*
2428
2529object Java9Modularity {
2630
@@ -108,12 +112,14 @@ object Java9Modularity {
108112 compileTask : KotlinCompile ,
109113 sourceFile : File
110114 ): TaskProvider <out KotlinJvmCompile > {
111- apply<KotlinBaseApiPlugin >()
115+ apply<KotlinApiPlugin >()
112116 val verifyModuleTaskName = " verify${compileTask.name.removePrefix(" compile" ).capitalize()} Module"
113117 // work-around for https://youtrack.jetbrains.com/issue/KT-60542
114- val verifyModuleTask = plugins
115- .findPlugin(KotlinBaseApiPlugin ::class )!!
116- .registerKotlinJvmCompileTask(verifyModuleTaskName)
118+ val kotlinApiPlugin = plugins.getPlugin(KotlinApiPlugin ::class )
119+ val verifyModuleTask = kotlinApiPlugin.registerKotlinJvmCompileTask(
120+ verifyModuleTaskName,
121+ compileTask.compilerOptions.moduleName.get()
122+ )
117123 verifyModuleTask {
118124 group = VERIFICATION_GROUP
119125 description = " Verify Kotlin sources for JPMS problems"
@@ -126,13 +132,14 @@ object Java9Modularity {
126132 source(sourceFile)
127133 destinationDirectory.set(temporaryDir)
128134 multiPlatformEnabled.set(compileTask.multiPlatformEnabled)
129- kotlinOptions {
130- moduleName = compileTask.kotlinOptions.moduleName
131- jvmTarget = " 9"
135+ compilerOptions {
136+ jvmTarget.set(JvmTarget .JVM_9 )
132137 // To support LV override when set in aggregate builds
133- languageVersion = compileTask.kotlinOptions.languageVersion
134- freeCompilerArgs + = listOf (" -Xjdk-release=9" , " -Xsuppress-version-warnings" , " -Xexpect-actual-classes" )
135- options.optIn.addAll(compileTask.kotlinOptions.options.optIn)
138+ languageVersion.set(compileTask.compilerOptions.languageVersion)
139+ freeCompilerArgs.addAll(
140+ listOf (" -Xjdk-release=9" , " -Xsuppress-version-warnings" , " -Xexpect-actual-classes" )
141+ )
142+ optIn.addAll(compileTask.kotlinOptions.options.optIn)
136143 }
137144 // work-around for https://youtrack.jetbrains.com/issue/KT-60583
138145 inputs.files(
@@ -145,12 +152,19 @@ object Java9Modularity {
145152 }
146153 ).withPropertyName(" moduleInfosOfLibraries" )
147154 this as KotlinCompile
148- // part of work-around for https://youtrack.jetbrains.com/issue/KT-60541
149- @Suppress(" DEPRECATION" )
150- ownModuleName.set(compileTask.kotlinOptions.moduleName)
151- // part of work-around for https://youtrack.jetbrains.com/issue/KT-60541
152- @Suppress(" INVISIBLE_MEMBER" )
153- commonSourceSet.from(compileTask.commonSourceSet)
155+ val kotlinPluginVersion = KotlinToolingVersion (kotlinApiPlugin.pluginVersion)
156+ if (kotlinPluginVersion <= KotlinToolingVersion (" 1.9.255" )) {
157+ // part of work-around for https://youtrack.jetbrains.com/issue/KT-60541
158+ @Suppress(" UNCHECKED_CAST" )
159+ val ownModuleNameProp = (this ::class .superclasses.first() as KClass <AbstractKotlinCompile <* >>)
160+ .declaredMemberProperties
161+ .find { it.name == " ownModuleName" }
162+ ?.get(this ) as ? Property <String >
163+ ownModuleNameProp?.set(compileTask.kotlinOptions.moduleName)
164+ // part of work-around for https://youtrack.jetbrains.com/issue/KT-60541
165+ @Suppress(" INVISIBLE_MEMBER" )
166+ commonSourceSet.from(compileTask.commonSourceSet)
167+ }
154168 @OptIn(InternalKotlinGradlePluginApi ::class )
155169 apply {
156170 multiplatformStructure.refinesEdges.set(compileTask.multiplatformStructure.refinesEdges)
0 commit comments