@@ -70,19 +70,7 @@ private fun Project.configureDependencies() {
7070private fun Project.configureTasks () {
7171 val config = config
7272 withPluginWhenEvaluated(" kotlin" ) {
73- if (config.transformJvm) {
74- // skip transformation task if ir transformation is enabled
75- if (rootProject.getBooleanProperty(ENABLE_JVM_IR_TRANSFORMATION )) return @withPluginWhenEvaluated
76- configureJvmTransformation(" compileTestKotlin" ) { sourceSet, transformedDir, originalDir ->
77- createJvmTransformTask(sourceSet).configureJvmTask(
78- sourceSet.compileClasspath,
79- sourceSet.classesTaskName,
80- transformedDir,
81- originalDir,
82- config
83- )
84- }
85- }
73+ if (config.transformJvm) configureJvmTransformation()
8674 }
8775 withPluginWhenEvaluated(" org.jetbrains.kotlin.js" ) {
8876 if (config.transformJs) configureJsTransformation()
@@ -182,12 +170,6 @@ private fun String.compilationNameToType(): CompilationType? = when (this) {
182170 else -> null
183171}
184172
185- private fun String.sourceSetNameToType (): CompilationType ? = when (this ) {
186- SourceSet .MAIN_SOURCE_SET_NAME -> CompilationType .MAIN
187- SourceSet .TEST_SOURCE_SET_NAME -> CompilationType .TEST
188- else -> null
189- }
190-
191173private val Project .config: AtomicFUPluginExtension
192174 get() = extensions.findByName(EXTENSION_NAME ) as ? AtomicFUPluginExtension ? : AtomicFUPluginExtension (null )
193175
@@ -235,6 +217,12 @@ private fun KotlinCompile<*>.setFriendPaths(friendPathsFileCollection: FileColle
235217 }
236218}
237219
220+ fun Project.configureJvmTransformation () {
221+ if (kotlinExtension is KotlinJvmProjectExtension || kotlinExtension is KotlinAndroidProjectExtension ) {
222+ configureTransformationForTarget((kotlinExtension as KotlinSingleTargetExtension <* >).target)
223+ }
224+ }
225+
238226fun Project.configureJsTransformation () =
239227 configureTransformationForTarget((kotlinExtension as KotlinJsProjectExtension ).js())
240228
@@ -391,50 +379,6 @@ fun Project.configureMultiplatformPluginDependencies(version: String) {
391379 }
392380}
393381
394- fun Project.configureJvmTransformation (
395- testTaskName : String ,
396- createTransformTask : (sourceSet: SourceSet , transformedDir: File , originalDir: FileCollection ) -> Task
397- ) {
398- val config = config
399- sourceSets.all { sourceSet ->
400- val compilationType = sourceSet.name.sourceSetNameToType()
401- ? : return @all // skip unknown types
402- val classesDirs = (sourceSet.output.classesDirs as ConfigurableFileCollection ).from as Collection <Any >
403- // make copy of original classes directory
404- val originalClassesDirs: FileCollection = project.files(classesDirs.toTypedArray()).filter { it.exists() }
405- (sourceSet as ExtensionAware ).extensions.add(ORIGINAL_DIR_NAME , originalClassesDirs)
406- val transformedClassesDir =
407- project.buildDir.resolve(" classes/atomicfu/${sourceSet.name} " )
408- // make transformedClassesDir the source path for output.classesDirs
409- (sourceSet.output.classesDirs as ConfigurableFileCollection ).setFrom(transformedClassesDir)
410- val transformTask = createTransformTask(sourceSet, transformedClassesDir, originalClassesDirs)
411- // now transformTask is responsible for compiling this source set into the classes directory
412- sourceSet.compiledBy(transformTask)
413- (tasks.findByName(sourceSet.jarTaskName) as ? Jar )?.apply {
414- setupJarManifest(multiRelease = config.jvmVariant.toJvmVariant() == JvmVariant .BOTH )
415- }
416- // test should compile and run against original production binaries
417- if (compilationType == CompilationType .TEST ) {
418- val mainSourceSet = sourceSets.getByName(SourceSet .MAIN_SOURCE_SET_NAME )
419- val originalMainClassesDirs = project.files(
420- // use Callable because there is no guarantee that main is configured before test
421- Callable { (mainSourceSet as ExtensionAware ).extensions.getByName(ORIGINAL_DIR_NAME ) as FileCollection }
422- )
423-
424- (tasks.findByName(testTaskName) as ? AbstractCompile )?.run {
425- classpath =
426- originalMainClassesDirs + sourceSet.compileClasspath - mainSourceSet.output.classesDirs
427-
428- (this as ? KotlinCompile <* >)?.setFriendPaths(originalMainClassesDirs)
429- }
430-
431- // todo: fix test runtime classpath for JS?
432- (tasks.findByName(JavaPlugin .TEST_TASK_NAME ) as ? Test )?.classpath =
433- originalMainClassesDirs + sourceSet.runtimeClasspath - mainSourceSet.output.classesDirs
434- }
435- }
436- }
437-
438382fun String.toJvmVariant (): JvmVariant = enumValueOf(toUpperCase(Locale .US ))
439383
440384fun Project.createJvmTransformTask (compilation : KotlinCompilation <* >): AtomicFUTransformTask =
0 commit comments