Introduce IncrementalCompilerRunner#makeServices

This commit is contained in:
Alexey Tsvetkov
2017-08-29 00:07:26 +03:00
parent 65529fa866
commit d4d684a7f0
2 changed files with 32 additions and 15 deletions
@@ -135,7 +135,7 @@ abstract class IncrementalCompilerRunner<
caches.platformCache.markDirty(dirtySources)
}
protected abstract fun compareAndUpdateCache(caches: CacheManager, generatedFiles: List<GeneratedFile>): CompilationResult
protected abstract fun compareAndUpdateCache(services: Services, caches: CacheManager, generatedFiles: List<GeneratedFile>): CompilationResult
protected open fun preBuildHook(args: Args, compilationMode: CompilationMode) {}
protected open fun postCompilationHook(exitCode: ExitCode) {}
@@ -144,11 +144,22 @@ abstract class IncrementalCompilerRunner<
protected open fun additionalDirtyLookupSymbols(): Iterable<LookupSymbol> =
emptyList()
protected open fun makeServices(
args: Args,
lookupTracker: LookupTracker,
caches: CacheManager,
compilationMode: CompilationMode
): Services.Builder =
Services.Builder().apply {
register(LookupTracker::class.java, lookupTracker)
register(CompilationCanceledStatus::class.java, EmptyCompilationCanceledStatus)
}
protected abstract fun runCompiler(
sourcesToCompile: Set<File>,
args: Args,
caches: CacheManager,
services: Services.Builder,
services: Services,
messageCollector: MessageCollector
): ExitCode
@@ -188,10 +199,7 @@ abstract class IncrementalCompilerRunner<
val text = allSourcesToCompile.joinToString(separator = System.getProperty("line.separator")) { it.canonicalPath }
dirtySourcesSinceLastTimeFile.writeText(text)
val services = Services.Builder().apply {
register(LookupTracker::class.java, lookupTracker)
register(CompilationCanceledStatus::class.java, EmptyCompilationCanceledStatus)
}
val services = makeServices(args, lookupTracker, caches, compilationMode).build()
args.reportOutputFiles = true
val outputItemsCollector = OutputItemsCollectorImpl()
@@ -218,7 +226,7 @@ abstract class IncrementalCompilerRunner<
allGeneratedFiles.addAll(generatedFiles)
caches.inputsCache.registerOutputForSourceFiles(generatedFiles)
caches.lookupCache.update(lookupTracker, sourcesToCompile, removedKotlinSources)
val compilationResult = compareAndUpdateCache(caches, generatedFiles)
val compilationResult = compareAndUpdateCache(services, caches, generatedFiles)
if (compilationMode is CompilationMode.Rebuild) break
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler
import org.jetbrains.kotlin.compilerRunner.ArgumentUtils
import org.jetbrains.kotlin.config.IncrementalCompilation
import org.jetbrains.kotlin.config.Services
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.incremental.multiproject.ArtifactChangesProvider
import org.jetbrains.kotlin.incremental.multiproject.ChangesRegistry
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
@@ -210,7 +211,7 @@ class IncrementalJvmCompilerRunner(
}
}
override fun compareAndUpdateCache(caches: IncrementalJvmCachesManager, generatedFiles: List<GeneratedFile>): CompilationResult =
override fun compareAndUpdateCache(services: Services, caches: IncrementalJvmCachesManager, generatedFiles: List<GeneratedFile>): CompilationResult =
updateIncrementalCache(generatedFiles, caches.platformCache)
override fun additionalDirtyFiles(
@@ -256,11 +257,24 @@ class IncrementalJvmCompilerRunner(
override fun additionalDirtyLookupSymbols(): Iterable<LookupSymbol> =
javaFilesProcessor.allChangedSymbols
override fun makeServices(
args: K2JVMCompilerArguments,
lookupTracker: LookupTracker,
caches: IncrementalJvmCachesManager,
compilationMode: CompilationMode
): Services.Builder =
super.makeServices(args, lookupTracker, caches, compilationMode).apply {
val targetId = TargetId(args.moduleName!!, "java-production")
val targetToCache = mapOf(targetId to caches.platformCache)
val incrementalComponents = IncrementalCompilationComponentsImpl(targetToCache)
register(IncrementalCompilationComponents::class.java, incrementalComponents)
}
override fun runCompiler(
sourcesToCompile: Set<File>,
args: K2JVMCompilerArguments,
caches: IncrementalJvmCachesManager,
services: Services.Builder,
services: Services,
messageCollector: MessageCollector
): ExitCode {
val compiler = K2JVMCompiler()
@@ -278,14 +292,9 @@ class IncrementalJvmCompilerRunner(
args.buildFile = moduleFile.absolutePath
try {
val targetId = TargetId(args.buildFile!!, "java-production")
val targetToCache = mapOf(targetId to caches.platformCache)
val incrementalComponents = IncrementalCompilationComponentsImpl(targetToCache)
services.register(IncrementalCompilationComponents::class.java, incrementalComponents)
reporter.report { "compiling with args: ${ArgumentUtils.convertArgumentsToStringList(args)}" }
reporter.report { "compiling with classpath: ${classpath.toList().sorted().joinToString()}" }
val exitCode = compiler.exec(messageCollector, services.build(), args)
val exitCode = compiler.exec(messageCollector, services, args)
reporter.reportCompileIteration(sourcesToCompile, exitCode)
return exitCode
}