Remove hack with targets. Add target for most recent jdk
This commit is contained in:
@@ -31,12 +31,7 @@ enum class JvmTarget(override val description: String) : TargetPlatformVersion {
|
||||
val bytecodeVersion: Int by lazy {
|
||||
when (this) {
|
||||
JVM_1_6 -> Opcodes.V1_6
|
||||
JVM_1_8 ->
|
||||
when {
|
||||
java.lang.Boolean.valueOf(System.getProperty("kotlin.test.substitute.bytecode.1.8.to.10")) -> Opcodes.V9 + 1
|
||||
java.lang.Boolean.valueOf(System.getProperty("kotlin.test.substitute.bytecode.1.8.to.1.9")) -> Opcodes.V9
|
||||
else -> Opcodes.V1_8
|
||||
}
|
||||
JVM_1_8 -> Opcodes.V1_8
|
||||
JVM_9 -> Opcodes.V9
|
||||
JVM_10 -> Opcodes.V9 + 1
|
||||
JVM_11 -> Opcodes.V9 + 2
|
||||
|
||||
@@ -623,12 +623,22 @@ public abstract class CodegenTestCase extends KtUsefulTestCase {
|
||||
|
||||
}
|
||||
|
||||
private static void setCustomDefaultJvmTarget(CompilerConfiguration configuration) {
|
||||
JvmTarget target = configuration.get(JVMConfigurationKeys.JVM_TARGET);
|
||||
if (target == null && DEFAULT_JVM_TARGET != null) {
|
||||
JvmTarget value = JvmTarget.fromString(DEFAULT_JVM_TARGET);
|
||||
assert value != null : "Can't construct JvmTarget for " + DEFAULT_JVM_TARGET;
|
||||
configuration.put(JVMConfigurationKeys.JVM_TARGET, value);
|
||||
protected void setCustomDefaultJvmTarget(CompilerConfiguration configuration) {
|
||||
if (DEFAULT_JVM_TARGET != null) {
|
||||
JvmTarget customDefaultTarget = JvmTarget.fromString(DEFAULT_JVM_TARGET);
|
||||
assert customDefaultTarget != null : "Can't construct JvmTarget for " + DEFAULT_JVM_TARGET;
|
||||
JvmTarget originalTarget = configuration.get(JVMConfigurationKeys.JVM_TARGET);
|
||||
if (originalTarget == null || customDefaultTarget.getBytecodeVersion() > originalTarget.getBytecodeVersion()) {
|
||||
// It's not safe to substitute target in general
|
||||
// cause it can affect generated bytecode and original behaviour should be tested somehow.
|
||||
// Original behaviour testing is perfomed by
|
||||
//
|
||||
// codegenTest(target = 6, jvm = "Last", jdk = mostRecentJdk)
|
||||
// codegenTest(target = 8, jvm = "Last", jdk = mostRecentJdk)
|
||||
//
|
||||
// in compiler/tests-different-jdk/build.gradle.kts
|
||||
configuration.put(JVMConfigurationKeys.JVM_TARGET, customDefaultTarget);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -32,18 +32,20 @@ fun Project.codegenTest(
|
||||
|
||||
fun Project.codegenTest(
|
||||
target: Int, jvm: String, jdk: String,
|
||||
targetInTestClass: String = "$target",
|
||||
body: Test.() -> Unit
|
||||
): Test = projectTest("codegenTarget${target}Jvm${jvm}Test") {
|
||||
): Test = projectTest("codegenTarget${targetInTestClass}Jvm${jvm}Test") {
|
||||
dependsOn(":dist")
|
||||
workingDir = rootDir
|
||||
|
||||
filter.includeTestsMatching("org.jetbrains.kotlin.codegen.jdk.JvmTarget${target}OnJvm${jvm}")
|
||||
filter.includeTestsMatching("org.jetbrains.kotlin.codegen.jdk.JvmTarget${targetInTestClass}OnJvm${jvm}")
|
||||
|
||||
systemProperty("kotlin.test.default.jvm.target", "${if (target <= 8) "1." else ""}$target")
|
||||
body()
|
||||
doFirst {
|
||||
val jdkPath = project.findProperty(jdk) ?: error("$jdk is not optional to run this test")
|
||||
executable = "$jdkPath/bin/java"
|
||||
println("Running test with $executable")
|
||||
println("Running tests with $target target and $executable")
|
||||
}
|
||||
group = "verification"
|
||||
}
|
||||
@@ -59,31 +61,29 @@ codegenTest(target = 6, jvm = 6, jdk = "JDK_18") {
|
||||
systemProperty("kotlin.test.box.in.separate.process.server.classpath", testJvm6ServerRuntime.asPath)
|
||||
}
|
||||
|
||||
codegenTest(target = 6, jvm = 9) {
|
||||
systemProperty("kotlin.test.default.jvm.target", "1.6")
|
||||
}
|
||||
codegenTest(target = 6, jvm = 9) {}
|
||||
|
||||
codegenTest(target = 8, jvm = 8) {
|
||||
systemProperty("kotlin.test.default.jvm.target", "1.8")
|
||||
}
|
||||
codegenTest(target = 8, jvm = 8) {}
|
||||
|
||||
codegenTest(target = 8, jvm = 9) {
|
||||
systemProperty("kotlin.test.default.jvm.target", "1.8")
|
||||
}
|
||||
codegenTest(target = 8, jvm = 9) {}
|
||||
|
||||
codegenTest(target = 9, jvm = 9) {
|
||||
systemProperty("kotlin.test.default.jvm.target", "1.8")
|
||||
systemProperty("kotlin.test.substitute.bytecode.1.8.to.1.9", "true")
|
||||
}
|
||||
codegenTest(target = 9, jvm = 9) {}
|
||||
|
||||
codegenTest(target = 6, jvm = "Last", jdk = JdkMajorVersion.values().last().name) {
|
||||
systemProperty("kotlin.test.default.jvm.target", "1.6")
|
||||
val mostRecentJdk = JdkMajorVersion.values().last().name
|
||||
|
||||
codegenTest(target = 6, jvm = "Last", jdk = mostRecentJdk) {
|
||||
jvmArgs!!.add( "-XX:-FailOverToOldVerifier")
|
||||
}
|
||||
|
||||
codegenTest(target = 8, jvm = "Last", jdk = JdkMajorVersion.values().last().name) {
|
||||
systemProperty("kotlin.test.default.jvm.target", "1.8")
|
||||
codegenTest(target = 8, jvm = "Last", jdk = mostRecentJdk) {
|
||||
jvmArgs!!.add( "-XX:-FailOverToOldVerifier")
|
||||
}
|
||||
|
||||
codegenTest(
|
||||
mostRecentJdk.substringAfter('_').toInt(),
|
||||
targetInTestClass = "Last",
|
||||
jvm = "Last",
|
||||
jdk = mostRecentJdk
|
||||
) {}
|
||||
|
||||
testsJar()
|
||||
|
||||
+3
@@ -94,3 +94,6 @@ class JvmTarget6OnJvmLast : CustomJvmTargetOnJvmBaseTest()
|
||||
|
||||
@RunWith(SuiteRunnerForCustomJdk::class)
|
||||
class JvmTarget8OnJvmLast : CustomJvmTargetOnJvmBaseTest()
|
||||
|
||||
@RunWith(SuiteRunnerForCustomJdk::class)
|
||||
class JvmTargetLastOnJvmLast : CustomJvmTargetOnJvmBaseTest()
|
||||
|
||||
Reference in New Issue
Block a user