Support configuration directives FULL_JDK, WITH_RUNTIME, WITH_REFLECT in Psi2Ir tests.
This commit is contained in:
committed by
Dmitry Petrov
parent
d623c70778
commit
539d7ccf6f
@@ -16,6 +16,8 @@
|
||||
|
||||
package org.jetbrains.kotlin.ir
|
||||
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||
import org.jetbrains.kotlin.codegen.CodegenTestCase
|
||||
import org.jetbrains.kotlin.ir.declarations.IrFile
|
||||
import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
|
||||
@@ -23,15 +25,52 @@ import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator
|
||||
import org.jetbrains.kotlin.resolve.AnalyzingUtils
|
||||
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil
|
||||
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils.getAnnotationsJar
|
||||
import java.io.File
|
||||
import java.util.*
|
||||
|
||||
abstract class AbstractIrGeneratorTestCase : CodegenTestCase() {
|
||||
override fun doMultiFileTest(wholeFile: File, files: List<TestFile>, javaFilesDir: File?) {
|
||||
createEnvironmentWithMockJdkAndIdeaAnnotations(ConfigurationKind.ALL, files, javaFilesDir)
|
||||
setupEnvironment(files, javaFilesDir)
|
||||
|
||||
loadMultiFiles(files)
|
||||
doTest(wholeFile, files)
|
||||
}
|
||||
|
||||
private fun setupEnvironment(files: List<TestFile>, javaFilesDir: File?) {
|
||||
val jdkKind = getJdkKind(files)
|
||||
|
||||
val javacOptions = ArrayList<String>(0)
|
||||
var addRuntime = false
|
||||
var addReflect = false
|
||||
for (file in files) {
|
||||
if (InTextDirectivesUtils.isDirectiveDefined(file.content, "WITH_RUNTIME")) {
|
||||
addRuntime = true
|
||||
}
|
||||
if (InTextDirectivesUtils.isDirectiveDefined(file.content, "WITH_REFLECT")) {
|
||||
addReflect = true
|
||||
}
|
||||
|
||||
javacOptions.addAll(InTextDirectivesUtils.findListWithPrefixes(file.content, "// JAVAC_OPTIONS:"))
|
||||
}
|
||||
|
||||
val configurationKind = when {
|
||||
addReflect -> ConfigurationKind.ALL
|
||||
addRuntime -> ConfigurationKind.NO_KOTLIN_REFLECT
|
||||
else -> ConfigurationKind.JDK_ONLY
|
||||
};
|
||||
|
||||
val configuration = createConfiguration(
|
||||
configurationKind, jdkKind,
|
||||
listOf<File>(getAnnotationsJar()),
|
||||
arrayOf(javaFilesDir).filterNotNull(),
|
||||
files
|
||||
)
|
||||
|
||||
myEnvironment = KotlinCoreEnvironment.createForTests(testRootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)
|
||||
}
|
||||
|
||||
protected abstract fun doTest(wholeFile: File, testFiles: List<TestFile>)
|
||||
|
||||
protected fun generateIrFilesAsSingleModule(testFiles: List<TestFile>, ignoreErrors: Boolean = false): Map<TestFile, IrFile> {
|
||||
|
||||
+1
-1
@@ -21,6 +21,6 @@ import java.io.File
|
||||
abstract class AbstractPsi2IrAcceptanceTestCase : AbstractIrGeneratorTestCase() {
|
||||
override fun doTest(wholeFile: File, testFiles: List<TestFile>) {
|
||||
// Just make sure that nothing interesting happens - e.g., no exceptions thrown
|
||||
generateIrFilesAsSingleModule(testFiles, true)
|
||||
generateIrFilesAsSingleModule(testFiles, false)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user