diff --git a/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinJpsCompilerArgumentsProvider.kt b/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinJpsCompilerArgumentsProvider.kt index 065b2644b37..3a3833d83e6 100644 --- a/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinJpsCompilerArgumentsProvider.kt +++ b/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinJpsCompilerArgumentsProvider.kt @@ -22,4 +22,5 @@ import org.jetbrains.jps.incremental.CompileContext public trait KotlinJpsCompilerArgumentsProvider { public fun getExtraArguments(moduleBuildTarget: ModuleBuildTarget, context: CompileContext): List + public fun getClasspath(moduleBuildTarget: ModuleBuildTarget, context: CompileContext): List } \ No newline at end of file diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt index 72b007a0d10..cb10338f474 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt @@ -142,11 +142,20 @@ public class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR val representativeTarget = chunk.representativeTarget() + fun concatenate(strings: Array?, cp: List) = array(*(strings ?: array()), *cp.copyToArray()) + for (argumentProvider in ServiceLoader.load(javaClass())) { // appending to pluginOptions - commonArguments.pluginOptions = array( - *(commonArguments.pluginOptions ?: array()), - *argumentProvider.getExtraArguments(representativeTarget, context).copyToArray() + commonArguments.pluginOptions = concatenate(commonArguments.pluginOptions, + argumentProvider.getExtraArguments(representativeTarget, context)) + // appending to classpath + commonArguments.pluginClasspaths = concatenate(commonArguments.pluginClasspaths, + argumentProvider.getClasspath(representativeTarget, context)) + + messageCollector.report( + INFO, + "Plugin loaded: ${argumentProvider.javaClass.getSimpleName()}", + NO_LOCATION ) }