javac-wrapper: -Xuse-javac -> -Xuse-javac and -Xcompile-java
This commit is contained in:
committed by
Alexander Baratynskiy
parent
2224720a90
commit
8494e54608
+3
@@ -148,6 +148,9 @@ class K2JVMCompilerArguments : CommonCompilerArguments() {
|
||||
@Argument(value = "-Xuse-javac", description = "Use javac for Java source and class files analysis")
|
||||
var useJavac: Boolean by FreezableVar(false)
|
||||
|
||||
@Argument(value = "-Xcompile-java", description = "Reuse javac analysis and compile Java source files")
|
||||
public boolean compileJava;
|
||||
|
||||
@Argument(
|
||||
value = "-Xjavac-arguments",
|
||||
valueDescription = "<option[,]>",
|
||||
|
||||
@@ -242,7 +242,7 @@ class K2JVMCompiler : CLICompiler<K2JVMCompilerArguments>() {
|
||||
arguments: K2JVMCompilerArguments): Boolean {
|
||||
if (arguments.useJavac) {
|
||||
environment.configuration.put(JVMConfigurationKeys.USE_JAVAC, true)
|
||||
return environment.registerJavac(arguments = arguments.javacArguments)
|
||||
return environment.registerJavac(compileJava = arguments.compileJava, arguments = arguments.javacArguments)
|
||||
}
|
||||
|
||||
return true
|
||||
|
||||
@@ -275,9 +275,10 @@ class KotlinCoreEnvironment private constructor(
|
||||
fun registerJavac(
|
||||
javaFiles: List<File> = allJavaFiles,
|
||||
kotlinFiles: List<KtFile> = sourceFiles,
|
||||
compileJava: Boolean = false,
|
||||
arguments: Array<String>? = null
|
||||
): Boolean {
|
||||
return JavacWrapperRegistrar.registerJavac(projectEnvironment.project, configuration, javaFiles, kotlinFiles, arguments)
|
||||
return JavacWrapperRegistrar.registerJavac(projectEnvironment.project, configuration, javaFiles, kotlinFiles, compileJava, arguments)
|
||||
}
|
||||
|
||||
private val applicationEnvironment: CoreApplicationEnvironment
|
||||
|
||||
@@ -36,6 +36,7 @@ object JavacWrapperRegistrar {
|
||||
configuration: CompilerConfiguration,
|
||||
javaFiles: List<File>,
|
||||
kotlinFiles: List<KtFile>,
|
||||
compileJava: Boolean,
|
||||
arguments: Array<String>?
|
||||
): Boolean {
|
||||
val messageCollector = configuration.getNotNull(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY)
|
||||
@@ -54,7 +55,7 @@ object JavacWrapperRegistrar {
|
||||
val jvmClasspathRoots = configuration.jvmClasspathRoots
|
||||
val outputDirectory = configuration.get(JVMConfigurationKeys.OUTPUT_DIRECTORY)
|
||||
|
||||
val javacWrapper = JavacWrapper(javaFiles, kotlinFiles, arguments, jvmClasspathRoots, outputDirectory, context)
|
||||
val javacWrapper = JavacWrapper(javaFiles, kotlinFiles, arguments, jvmClasspathRoots, compileJava, outputDirectory, context)
|
||||
|
||||
project.registerService(JavacWrapper::class.java, javacWrapper)
|
||||
|
||||
|
||||
@@ -67,6 +67,7 @@ class JavacWrapper(
|
||||
kotlinFiles: Collection<KtFile>,
|
||||
arguments: Array<String>?,
|
||||
jvmClasspathRoots: List<File>,
|
||||
private val compileJava: Boolean,
|
||||
private val outputDirectory: File?,
|
||||
private val context: Context
|
||||
) : Closeable {
|
||||
@@ -154,6 +155,7 @@ class JavacWrapper(
|
||||
private val symbolBasedPackagesCache = hashMapOf<String, SymbolBasedPackage?>()
|
||||
|
||||
fun compile(outDir: File? = null): Boolean = with(javac) {
|
||||
if (!compileJava) return true
|
||||
if (errorCount() > 0) return false
|
||||
|
||||
val javaFilesNumber = fileObjects.length()
|
||||
|
||||
+6
@@ -22,6 +22,12 @@ where advanced options include:
|
||||
-Xskip-runtime-version-check Allow Kotlin runtime libraries of incompatible versions in the classpath
|
||||
-Xuse-javac Use javac for Java source and class files analysis
|
||||
-Xuse-old-class-files-reading Use old class files reading implementation (may slow down the build and should be used in case of problems with the new implementation)
|
||||
-Xcompile-java Reuse javac analysis and compile Java source files
|
||||
-Xjavac-arguments=<option[,]> Java compiler arguments
|
||||
-Xload-jsr305-annotations Load JSR-305 nullability annotations
|
||||
-Xno-inline Disable method inlining
|
||||
-Xrepeat=<count> Repeat compilation (for performance analysis)
|
||||
-Xskip-metadata-version-check Load classes with bad metadata version anyway (incl. pre-release classes)
|
||||
-Xallow-kotlin-package Allow compiling code in package 'kotlin'
|
||||
-Xcoroutines={enable|warn|error}
|
||||
Enable coroutines or report warnings or errors on declarations and use sites of 'suspend' modifier
|
||||
|
||||
+3
-1
@@ -98,7 +98,9 @@ abstract class AbstractCompileJavaAgainstKotlinTest : TestCaseWithTmpdir() {
|
||||
environment.configuration.put(JVMConfigurationKeys.USE_JAVAC, true)
|
||||
environment.configuration.put(JVMConfigurationKeys.OUTPUT_DIRECTORY, outDir)
|
||||
environment.configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, MessageCollector.NONE)
|
||||
environment.registerJavac(javaFiles, kotlinFiles = listOf(KotlinTestUtils.loadJetFile(environment.project, ktFiles.first())))
|
||||
environment.registerJavac(javaFiles = javaFiles,
|
||||
kotlinFiles = listOf(KotlinTestUtils.loadJetFile(environment.project, ktFiles.first())),
|
||||
compileJava = true)
|
||||
if (!ktFiles.isEmpty()) {
|
||||
LoadDescriptorUtil.compileKotlinToDirAndGetModule(ktFiles, outDir, environment)
|
||||
}
|
||||
|
||||
+3
-1
@@ -79,7 +79,9 @@ abstract class AbstractCompileKotlinAgainstJavaTest : TestCaseWithTmpdir() {
|
||||
val environment = createEnvironmentWithMockJdkAndIdeaAnnotations(disposable)
|
||||
environment.configuration.put(JVMConfigurationKeys.USE_JAVAC, true)
|
||||
environment.configuration.put(JVMConfigurationKeys.OUTPUT_DIRECTORY, outDir)
|
||||
environment.registerJavac(javaFiles, kotlinFiles = listOf(KotlinTestUtils.loadJetFile(environment.project, ktFiles.first())))
|
||||
environment.registerJavac(javaFiles = javaFiles,
|
||||
kotlinFiles = listOf(KotlinTestUtils.loadJetFile(environment.project, ktFiles.first())),
|
||||
compileJava = true)
|
||||
if (!ktFiles.isEmpty()) {
|
||||
LoadDescriptorUtil.compileKotlinToDirAndGetModule(ktFiles, outDir, environment)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user