JVM: CHECK_BYTECODE_TEST directive + use it in INVOKEDYNAMIC tests

This commit is contained in:
Dmitry Petrov
2021-04-02 16:33:52 +03:00
committed by TeamCityServer
parent ca352c9556
commit 162363a324
119 changed files with 581 additions and 30 deletions
@@ -1,6 +1,12 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 0 java/lang/invoke/LambdaMetafactory
// 1 final synthetic class AdaptedFunRefWithCoercionToUnitKt\$box\$[0-9]+
// FILE: adaptedFunRefWithCoercionToUnit.kt
var ok = "Failed"
@@ -1,6 +1,12 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 0 java/lang/invoke/LambdaMetafactory
// 1 final synthetic class AdaptedFunRefWithDefaultParametersKt\$box\$[0-9]+
// FILE: adaptedFunRefWithDefaultParameters.kt
var ok = "Failed"
@@ -1,6 +1,12 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 0 java/lang/invoke/LambdaMetafactory
// 1 final synthetic class AdaptedFunRefWithVarargKt\$box\$[0-9]+
// FILE: adaptedFunRefWithVararg.kt
var ok = "Failed"
@@ -1,6 +1,11 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 1 java/lang/invoke/LambdaMetafactory
// FILE: boundExtFun.kt
fun String.k(s: String) = this + s + "K"
@@ -1,6 +1,11 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 1 java/lang/invoke/LambdaMetafactory
// FILE: boundInnerConstructorRef.kt
class Outer(val s1: String) {
inner class Inner(val s2: String) {
@@ -1,6 +1,11 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 1 java/lang/invoke/LambdaMetafactory
// FILE: boundLocalExtFun.kt
fun box(): String {
fun String.k(s: String) = this + s + "K"
@@ -1,6 +1,11 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 1 java/lang/invoke/LambdaMetafactory
// FILE: boundMemberRef.kt
class C(val t: String) {
fun test() = t
@@ -4,6 +4,10 @@
// WITH_RUNTIME
// FULL_JDK
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 2 java/lang/invoke/LambdaMetafactory
// FILE: boundRefToSuperClassMethod.kt
class Impl(val set1: Set<String>, val set2: Set<String>) : JDerived() {
@@ -4,6 +4,10 @@
// WITH_RUNTIME
// FULL_JDK
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 2 java/lang/invoke/LambdaMetafactory
// FILE: boundRefToSuperInterfaceMethod.kt
class Impl(val set1: Set<String>, val set2: Set<String>) : JDerived {
@@ -1,6 +1,11 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 1 java/lang/invoke/LambdaMetafactory
// FILE: constructorRef.kt
class C(val t: String)
@@ -2,6 +2,11 @@
// IGNORE_BACKEND_FIR: JVM_IR
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 1 java/lang/invoke/LambdaMetafactory
// FILE: enhancedNullability.kt
fun mul2(x: Int) = x * 2
@@ -1,6 +1,11 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 1 java/lang/invoke/LambdaMetafactory
// FILE: innerConstructorRef.kt
class Outer(val s1: String) {
inner class Inner(val s2: String) {
@@ -1,6 +1,11 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 1 java/lang/invoke/LambdaMetafactory
// FILE: intReturnTypeAsNumber.kt
fun box(): String {
@@ -1,6 +1,11 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 1 java/lang/invoke/LambdaMetafactory
// FILE: interfaceMemberRef.kt
interface IFoo {
fun foo(): String
@@ -5,6 +5,11 @@
// FULL_JDK
// IGNORE_DEXING
// ^ D8 fails with AssertionError, possible reason: only Kotlin output files are passed to D8
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 1 java/lang/invoke/LambdaMetafactory
// FILE: kt45581.kt
fun box(): String = J.bar(emptySet<String>()::contains)
@@ -1,6 +1,11 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 1 java/lang/invoke/LambdaMetafactory
// FILE: localFunction1.kt
fun box(): String {
fun ok() = "OK"
@@ -1,6 +1,11 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 1 java/lang/invoke/LambdaMetafactory
// FILE: localFunction2.kt
fun box(): String {
val t = "O"
@@ -1,6 +1,11 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 1 java/lang/invoke/LambdaMetafactory
// FILE: memberRef.kt
class C(val t: String) {
fun test() = t
@@ -2,6 +2,11 @@
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// WITH_RUNTIME
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 1 java/lang/invoke/LambdaMetafactory
// FILE: JavaRunner.java
public class JavaRunner {
public static void runTwice(Runnable runnable) {
@@ -1,6 +1,11 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 1 java/lang/invoke/LambdaMetafactory
// FILE: nothingReturnTypeAsObject.kt
fun interface IFoo<T> {
@@ -1,6 +1,11 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 1 java/lang/invoke/LambdaMetafactory
// FILE: nothingReturnTypeAsString.kt
fun interface IFoo<T> {
@@ -1,6 +1,11 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 1 java/lang/invoke/LambdaMetafactory
// FILE: nullableNothingReturnTypeAsObject.kt
fun interface IFoo<T> {
@@ -1,6 +1,11 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 1 java/lang/invoke/LambdaMetafactory
// FILE: nullableNothingReturnTypeAsString.kt
fun interface IFoo<T> {
@@ -1,6 +1,11 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 1 java/lang/invoke/LambdaMetafactory
// FILE: simple.kt
fun ok() = "OK"
@@ -1,6 +1,12 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// CHECK_BYTECODE_TEXT
// JVM_IR_TEMPLATES
// 0 java/lang/invoke/LambdaMetafactory
// 1 final synthetic class VoidReturnTypeAsObjectKt\$box\$r\$[0-9]+
// FILE: voidReturnTypeAsObject.kt
var t = "Failed"