Add the IR version of CompileJavaAgainstKotlin tests

Only the WithoutJavac version for now, because the other one ignores
javac errors.
This commit is contained in:
pyos
2019-04-12 10:07:02 +02:00
committed by max-kammerer
parent 8a95da4a95
commit c7d7d903cd
26 changed files with 765 additions and 64 deletions
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.javac.JavacWrapper
import org.jetbrains.kotlin.name.FqName
@@ -73,7 +74,7 @@ abstract class AbstractCompileJavaAgainstKotlinTest : TestCaseWithTmpdir() {
KotlinTestUtils.compileKotlinWithJava(
listOf(javaFile),
listOf(ktFile),
out, testRootDisposable, javaErrorFile
out, testRootDisposable, javaErrorFile, this::updateConfiguration
)
}
@@ -94,6 +95,8 @@ abstract class AbstractCompileJavaAgainstKotlinTest : TestCaseWithTmpdir() {
validateAndCompareDescriptorWithFile(packageView, CONFIGURATION, expectedFile)
}
open fun updateConfiguration(configuration: CompilerConfiguration) {}
@Throws(IOException::class)
fun compileKotlinWithJava(
javaFiles: List<File>,
@@ -107,6 +110,7 @@ abstract class AbstractCompileJavaAgainstKotlinTest : TestCaseWithTmpdir() {
environment.configuration.put(JVMConfigurationKeys.COMPILE_JAVA, true)
environment.configuration.put(JVMConfigurationKeys.OUTPUT_DIRECTORY, outDir)
environment.configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, MessageCollector.NONE)
updateConfiguration(environment.configuration)
environment.registerJavac(
javaFiles = javaFiles,
kotlinFiles = listOf(KotlinTestUtils.loadJetFile(environment.project, ktFiles.first()))
@@ -117,7 +121,6 @@ abstract class AbstractCompileJavaAgainstKotlinTest : TestCaseWithTmpdir() {
val mkdirs = outDir.mkdirs()
assert(mkdirs) { "Not created: $outDir" }
}
return JavacWrapper.getInstance(environment.project).use { it.compile() }
}
@@ -0,0 +1,14 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.jvm.compiler.ir
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.jvm.compiler.AbstractCompileJavaAgainstKotlinTest
abstract class AbstractIrCompileJavaAgainstKotlinTest : AbstractCompileJavaAgainstKotlinTest() {
override fun updateConfiguration(configuration: CompilerConfiguration) = configuration.put(JVMConfigurationKeys.IR, true)
}
@@ -28,6 +28,7 @@ import com.intellij.testFramework.TestDataFile;
import com.intellij.util.PathUtil;
import com.intellij.util.containers.ContainerUtil;
import junit.framework.TestCase;
import kotlin.Unit;
import kotlin.collections.CollectionsKt;
import kotlin.collections.SetsKt;
import kotlin.jvm.functions.Function1;
@@ -708,10 +709,24 @@ public class KotlinTestUtils {
@NotNull File outDir,
@NotNull Disposable disposable,
@Nullable File javaErrorFile
) throws IOException {
return compileKotlinWithJava(javaFiles, ktFiles, outDir, disposable, javaErrorFile, null);
}
public static boolean compileKotlinWithJava(
@NotNull List<File> javaFiles,
@NotNull List<File> ktFiles,
@NotNull File outDir,
@NotNull Disposable disposable,
@Nullable File javaErrorFile,
@Nullable Function1<CompilerConfiguration, Unit> updateConfiguration
) throws IOException {
if (!ktFiles.isEmpty()) {
KotlinCoreEnvironment environment = createEnvironmentWithFullJdkAndIdeaAnnotations(disposable);
CompilerTestLanguageVersionSettingsKt.setupLanguageVersionSettingsForMultifileCompilerTests(ktFiles, environment);
if (updateConfiguration != null) {
updateConfiguration.invoke(environment.getConfiguration());
}
LoadDescriptorUtil.compileKotlinToDirAndGetModule(ktFiles, outDir, environment);
}
else {