Refactor AbstractCompileKotlinAgainstJavaTest
This commit is contained in:
+16
-6
@@ -17,10 +17,14 @@
|
|||||||
package org.jetbrains.kotlin.jvm.compiler
|
package org.jetbrains.kotlin.jvm.compiler
|
||||||
|
|
||||||
import com.intellij.openapi.Disposable
|
import com.intellij.openapi.Disposable
|
||||||
|
import com.intellij.openapi.util.io.FileUtil
|
||||||
|
import org.jetbrains.kotlin.cli.common.modules.ModuleBuilder
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||||
|
import org.jetbrains.kotlin.codegen.GenerationUtils
|
||||||
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
import org.jetbrains.kotlin.config.JVMConfigurationKeys
|
||||||
import org.jetbrains.kotlin.javac.JavacWrapper
|
import org.jetbrains.kotlin.javac.JavacWrapper
|
||||||
|
import org.jetbrains.kotlin.load.kotlin.ModuleVisibilityManager
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.renderer.AnnotationArgumentsRenderingPolicy
|
import org.jetbrains.kotlin.renderer.AnnotationArgumentsRenderingPolicy
|
||||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
||||||
@@ -74,28 +78,34 @@ abstract class AbstractCompileKotlinAgainstJavaTest : TestCaseWithTmpdir() {
|
|||||||
@Throws(IOException::class)
|
@Throws(IOException::class)
|
||||||
fun compileKotlinWithJava(
|
fun compileKotlinWithJava(
|
||||||
javaFiles: List<File>,
|
javaFiles: List<File>,
|
||||||
ktFiles: List<File>,
|
kotlinFiles: List<File>,
|
||||||
outDir: File,
|
outDir: File,
|
||||||
disposable: Disposable
|
disposable: Disposable
|
||||||
): Boolean {
|
): Boolean {
|
||||||
val environment = createEnvironmentWithMockJdkAndIdeaAnnotations(disposable)
|
val environment = createEnvironmentWithMockJdkAndIdeaAnnotations(disposable)
|
||||||
environment.configuration.put(JVMConfigurationKeys.USE_JAVAC, true)
|
environment.configuration.put(JVMConfigurationKeys.USE_JAVAC, true)
|
||||||
environment.configuration.put(JVMConfigurationKeys.COMPILE_JAVA, true)
|
environment.configuration.put(JVMConfigurationKeys.COMPILE_JAVA, true)
|
||||||
environment.configuration.put(JVMConfigurationKeys.OUTPUT_DIRECTORY, outDir)
|
val ktFiles = kotlinFiles.map { kotlinFile: File ->
|
||||||
|
createFile(kotlinFile.name, FileUtil.loadFile(kotlinFile, true), environment.project)
|
||||||
|
}
|
||||||
environment.registerJavac(
|
environment.registerJavac(
|
||||||
javaFiles = javaFiles,
|
javaFiles = javaFiles,
|
||||||
kotlinFiles = listOf(loadJetFile(environment.project, ktFiles.first())),
|
kotlinFiles = ktFiles,
|
||||||
arguments = arrayOf("-proc:none"),
|
arguments = arrayOf("-proc:none"),
|
||||||
bootClasspath = listOf(findMockJdkRtJar())
|
bootClasspath = listOf(findMockJdkRtJar())
|
||||||
)
|
)
|
||||||
if (ktFiles.isNotEmpty()) {
|
ModuleVisibilityManager.SERVICE.getInstance(environment.project).addModule(
|
||||||
LoadDescriptorUtil.compileKotlinToDirAndGetModule(ktFiles, outDir, environment)
|
ModuleBuilder("module for test", tmpdir.absolutePath, "test")
|
||||||
|
)
|
||||||
|
|
||||||
|
if (kotlinFiles.isNotEmpty()) {
|
||||||
|
GenerationUtils.compileFilesTo(ktFiles, environment, outDir)
|
||||||
} else {
|
} else {
|
||||||
val mkdirs = outDir.mkdirs()
|
val mkdirs = outDir.mkdirs()
|
||||||
assert(mkdirs) { "Not created: $outDir" }
|
assert(mkdirs) { "Not created: $outDir" }
|
||||||
}
|
}
|
||||||
|
|
||||||
return JavacWrapper.getInstance(environment.project).use { it.compile() }
|
return JavacWrapper.getInstance(environment.project).use { it.compile(outDir) }
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|||||||
Reference in New Issue
Block a user