@@ -112,14 +112,16 @@ abstract class AbstractKotlinCompile<T : CommonCompilerArguments>() : AbstractCo
112
112
// TODO: consider more reliable approach (see usage)
113
113
internal var anyClassesCompiled: Boolean = false
114
114
internal var friendTaskName: String? = null
115
+ internal var javaOutputDir: File ? = null
115
116
internal var sourceSetName: String by Delegates .notNull()
116
117
internal val moduleName: String
117
118
get() = " ${project.name} _$sourceSetName "
118
119
119
- var javaOutputDir: File ? = null
120
+ @Suppress(" UNCHECKED_CAST" )
121
+ protected val friendTask: AbstractKotlinCompile <T >?
122
+ get() = friendTaskName?.let { project.tasks.findByName(it) } as ? AbstractKotlinCompile <T >
120
123
121
- // In case the way to retrieve friend classpath entries is known at configuration time, it will be set
122
- var friendClasspathEntries: Lazy <List <String >? > = lazyOf(null )
124
+ var friendPaths: Lazy <Array <String >? > = lazy { friendTask?.javaOutputDir?.absolutePath?.let { arrayOf(it) } }
123
125
124
126
override fun compile () {
125
127
assert (false , { " unexpected call to compile()" })
@@ -206,15 +208,18 @@ open class KotlinCompile : AbstractKotlinCompile<K2JVMCompilerArguments>(), Kotl
206
208
val kaptPluginOptions = getKaptPluginOptions()
207
209
args.pluginOptions = (pluginOptions.arguments + kaptPluginOptions.arguments).toTypedArray()
208
210
209
- args.moduleName = moduleName
210
211
args.addCompilerBuiltIns = true
211
212
212
213
val gradleVersion = getGradleVersion()
213
214
if (gradleVersion == null || gradleVersion >= ParsedGradleVersion (3 , 2 )) {
214
215
args.loadBuiltInsFromDependencies = true
215
216
}
216
217
217
- friendTaskName?.let { addFriendPathForTestTask(it, args) }
218
+ args.moduleName = friendTask?.moduleName ? : moduleName
219
+ logger.kotlinDebug { " args.moduleName = ${args.moduleName} " }
220
+
221
+ args.friendPaths = friendPaths.value
222
+ logger.kotlinDebug { " args.friendPaths = ${args.friendPaths?.joinToString() ? : " []" } " }
218
223
219
224
if (defaultsOnly) return
220
225
@@ -226,15 +231,6 @@ open class KotlinCompile : AbstractKotlinCompile<K2JVMCompilerArguments>(), Kotl
226
231
logger.kotlinDebug { " $name destinationDir = $destinationDir " }
227
232
}
228
233
229
- internal fun addFriendPathForTestTask (friendKotlinTaskName : String , args : K2JVMCompilerArguments ) {
230
- val friendTask = project.getTasksByName(friendKotlinTaskName, /* recursive = */ false ).firstOrNull() as ? KotlinCompile ? : return
231
- args.friendPaths = arrayOf(
232
- friendTask.javaOutputDir!! .absolutePath,
233
- * friendClasspathEntries.value.orEmpty().toTypedArray())
234
- args.moduleName = friendTask.moduleName
235
- logger.kotlinDebug(" java destination directory for production = ${friendTask.javaOutputDir} " )
236
- }
237
-
238
234
override fun getSourceRoots () = SourceRoots .ForJvm .create(getSource(), sourceRootsContainer)
239
235
240
236
override fun callCompiler (args : K2JVMCompilerArguments , sourceRoots : SourceRoots , changedFiles : ChangedFiles ) {
0 commit comments