Update bytecode text tests for JVM_IR
This commit is contained in:
+10
-1
@@ -1,5 +1,4 @@
|
|||||||
// !LANGUAGE: +ProperIeee754Comparisons
|
// !LANGUAGE: +ProperIeee754Comparisons
|
||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
fun equals3(a: Byte?, b: Byte?) = a != null && b != null && a == b
|
fun equals3(a: Byte?, b: Byte?) = a != null && b != null && a == b
|
||||||
|
|
||||||
fun equals4(a: Byte?, b: Byte?) = if (a is Byte && b is Byte) a == b else null!!
|
fun equals4(a: Byte?, b: Byte?) = if (a is Byte && b is Byte) a == b else null!!
|
||||||
@@ -12,7 +11,17 @@ fun less4(a: Byte?, b: Byte?) = if (a is Byte && b is Byte) a < b else true
|
|||||||
|
|
||||||
fun less5(a: Any?, b: Any?) = if (a is Byte && b is Byte) a < b else true
|
fun less5(a: Any?, b: Any?) = if (a is Byte && b is Byte) a < b else true
|
||||||
|
|
||||||
|
// JVM_TEMPLATES
|
||||||
// 3 Intrinsics\.areEqual
|
// 3 Intrinsics\.areEqual
|
||||||
// 0 Intrinsics\.compare
|
// 0 Intrinsics\.compare
|
||||||
// 0 IFGE
|
// 0 IFGE
|
||||||
// 3 IF_ICMPGE
|
// 3 IF_ICMPGE
|
||||||
|
|
||||||
|
// JVM_IR_TEMPLATES
|
||||||
|
// 0 Intrinsics\.areEqual
|
||||||
|
// 0 Intrinsics\.compare
|
||||||
|
// 8 INVOKEVIRTUAL java/lang/Byte\.byteValue \(\)B
|
||||||
|
// 4 INVOKEVIRTUAL java/lang/Number\.byteValue \(\)B
|
||||||
|
// 0 IFGE
|
||||||
|
// 3 IF_ICMPNE
|
||||||
|
// 3 IF_ICMPGE
|
||||||
|
|||||||
+10
-1
@@ -1,5 +1,4 @@
|
|||||||
// !LANGUAGE: -ProperIeee754Comparisons
|
// !LANGUAGE: -ProperIeee754Comparisons
|
||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
fun equals3(a: Byte?, b: Byte?) = a != null && b != null && a == b
|
fun equals3(a: Byte?, b: Byte?) = a != null && b != null && a == b
|
||||||
|
|
||||||
fun equals4(a: Byte?, b: Byte?) = if (a is Byte && b is Byte) a == b else null!!
|
fun equals4(a: Byte?, b: Byte?) = if (a is Byte && b is Byte) a == b else null!!
|
||||||
@@ -12,8 +11,18 @@ fun less4(a: Byte?, b: Byte?) = if (a is Byte && b is Byte) a < b else true
|
|||||||
|
|
||||||
fun less5(a: Any?, b: Any?) = if (a is Byte && b is Byte) a < b else true
|
fun less5(a: Any?, b: Any?) = if (a is Byte && b is Byte) a < b else true
|
||||||
|
|
||||||
|
// JVM_TEMPLATES
|
||||||
// 3 Intrinsics\.areEqual
|
// 3 Intrinsics\.areEqual
|
||||||
// 3 Intrinsics\.compare
|
// 3 Intrinsics\.compare
|
||||||
// for compare:
|
// for compare:
|
||||||
// 3 IFGE
|
// 3 IFGE
|
||||||
// 0 IF_ICMPGE
|
// 0 IF_ICMPGE
|
||||||
|
|
||||||
|
// JVM_IR_TEMPLATES
|
||||||
|
// 0 Intrinsics\.areEqual
|
||||||
|
// 0 Intrinsics\.compare
|
||||||
|
// 8 INVOKEVIRTUAL java/lang/Byte\.byteValue \(\)B
|
||||||
|
// 4 INVOKEVIRTUAL java/lang/Number\.byteValue \(\)B
|
||||||
|
// 0 IFGE
|
||||||
|
// 3 IF_ICMPGE
|
||||||
|
// 3 IF_ICMPNE
|
||||||
+10
-1
@@ -1,5 +1,4 @@
|
|||||||
// !LANGUAGE: -ProperIeee754Comparisons
|
// !LANGUAGE: -ProperIeee754Comparisons
|
||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
fun equals3(a: Int?, b: Int?) = a != null && b != null && a == b
|
fun equals3(a: Int?, b: Int?) = a != null && b != null && a == b
|
||||||
|
|
||||||
fun equals4(a: Int?, b: Int?) = if (a is Int && b is Int) a == b else null!!
|
fun equals4(a: Int?, b: Int?) = if (a is Int && b is Int) a == b else null!!
|
||||||
@@ -12,8 +11,18 @@ fun less4(a: Int?, b: Int?) = if (a is Int && b is Int) a < b else true
|
|||||||
|
|
||||||
fun less5(a: Any?, b: Any?) = if (a is Int && b is Int) a < b else true
|
fun less5(a: Any?, b: Any?) = if (a is Int && b is Int) a < b else true
|
||||||
|
|
||||||
|
// JVM_TEMPLATES
|
||||||
// 3 Intrinsics\.areEqual
|
// 3 Intrinsics\.areEqual
|
||||||
// 3 Intrinsics\.compare
|
// 3 Intrinsics\.compare
|
||||||
// for compare:
|
// for compare:
|
||||||
// 3 IFGE
|
// 3 IFGE
|
||||||
// 0 IF_ICMPGE
|
// 0 IF_ICMPGE
|
||||||
|
|
||||||
|
// JVM_IR_TEMPLATES
|
||||||
|
// 3 Intrinsics\.areEqual
|
||||||
|
// 0 Intrinsics\.compare
|
||||||
|
// 4 INVOKEVIRTUAL java/lang/Integer\.intValue \(\)
|
||||||
|
// 2 INVOKEVIRTUAL java/lang/Number\.intValue \(\)I
|
||||||
|
// 0 IFGE
|
||||||
|
// 3 IF_ICMPGE
|
||||||
|
// 0 IF_ICMPNE
|
||||||
+10
-1
@@ -1,5 +1,4 @@
|
|||||||
// !LANGUAGE: +ProperIeee754Comparisons
|
// !LANGUAGE: +ProperIeee754Comparisons
|
||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
fun equals3(a: Short?, b: Short?) = a != null && b != null && a == b
|
fun equals3(a: Short?, b: Short?) = a != null && b != null && a == b
|
||||||
|
|
||||||
fun equals4(a: Short?, b: Short?) = if (a is Short && b is Short) a == b else null!!
|
fun equals4(a: Short?, b: Short?) = if (a is Short && b is Short) a == b else null!!
|
||||||
@@ -12,7 +11,17 @@ fun less4(a: Short?, b: Short?) = if (a is Short && b is Short) a < b else true
|
|||||||
|
|
||||||
fun less5(a: Any?, b: Any?) = if (a is Short && b is Short) a < b else true
|
fun less5(a: Any?, b: Any?) = if (a is Short && b is Short) a < b else true
|
||||||
|
|
||||||
|
// JVM_TEMPLATES
|
||||||
// 3 Intrinsics\.areEqual
|
// 3 Intrinsics\.areEqual
|
||||||
// 0 Intrinsics\.compare
|
// 0 Intrinsics\.compare
|
||||||
// 0 IFGE
|
// 0 IFGE
|
||||||
// 3 IF_ICMPGE
|
// 3 IF_ICMPGE
|
||||||
|
|
||||||
|
// JVM_IR_TEMPLATES
|
||||||
|
// 0 Intrinsics\.areEqual
|
||||||
|
// 0 Intrinsics\.compare
|
||||||
|
// 8 INVOKEVIRTUAL java/lang/Short\.shortValue \(\)S
|
||||||
|
// 4 INVOKEVIRTUAL java/lang/Number\.shortValue \(\)S
|
||||||
|
// 0 IFGE
|
||||||
|
// 3 IF_ICMPGE
|
||||||
|
// 3 IF_ICMPNE
|
||||||
|
|||||||
+10
-2
@@ -1,5 +1,4 @@
|
|||||||
// !LANGUAGE: -ProperIeee754Comparisons
|
// !LANGUAGE: -ProperIeee754Comparisons
|
||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
fun equals3(a: Short?, b: Short?) = a != null && b != null && a == b
|
fun equals3(a: Short?, b: Short?) = a != null && b != null && a == b
|
||||||
|
|
||||||
fun equals4(a: Short?, b: Short?) = if (a is Short && b is Short) a == b else null!!
|
fun equals4(a: Short?, b: Short?) = if (a is Short && b is Short) a == b else null!!
|
||||||
@@ -12,8 +11,17 @@ fun less4(a: Short?, b: Short?) = if (a is Short && b is Short) a < b else true
|
|||||||
|
|
||||||
fun less5(a: Any?, b: Any?) = if (a is Short && b is Short) a < b else true
|
fun less5(a: Any?, b: Any?) = if (a is Short && b is Short) a < b else true
|
||||||
|
|
||||||
|
// JVM_TEMPLATES
|
||||||
// 3 Intrinsics\.areEqual
|
// 3 Intrinsics\.areEqual
|
||||||
// 3 Intrinsics\.compare
|
// 3 Intrinsics\.compare
|
||||||
// for compare:
|
|
||||||
// 3 IFGE
|
// 3 IFGE
|
||||||
// 0 IF_ICMPGE
|
// 0 IF_ICMPGE
|
||||||
|
|
||||||
|
// JVM_IR_TEMPLATES
|
||||||
|
// 0 Intrinsics\.areEqual
|
||||||
|
// 0 Intrinsics\.compare
|
||||||
|
// 8 INVOKEVIRTUAL java/lang/Short\.shortValue \(\)S
|
||||||
|
// 4 INVOKEVIRTUAL java/lang/Number\.shortValue \(\)S
|
||||||
|
// 0 IFGE
|
||||||
|
// 3 IF_ICMPGE
|
||||||
|
// 3 IF_ICMPNE
|
||||||
-17
@@ -1,17 +0,0 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
open class A {
|
|
||||||
inline fun test(a: Int = 1, b: Long = 1L, c: String = "123") {
|
|
||||||
val d = 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// 1 test\$default\(LA;IJLjava/lang/String;ILjava/lang/Object;\)V\s+L0
|
|
||||||
// 1 LOCALVARIABLE this LA; L0 L9 0
|
|
||||||
// 1 LOCALVARIABLE a I L0 L9 1
|
|
||||||
// 1 LOCALVARIABLE b J L0 L9 2
|
|
||||||
// 1 LOCALVARIABLE c Ljava/lang/String; L0 L9 4
|
|
||||||
// 1 LOCALVARIABLE \$i\$f\$test I L6 L9 5
|
|
||||||
// 1 LOCALVARIABLE d I L8 L9 6
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
public inline fun <T> Iterable(crossinline iterator: () -> Iterator<T>): Iterable<T> = object : Iterable<T> {
|
|
||||||
override fun iterator(): Iterator<T> = iterator()
|
|
||||||
}
|
|
||||||
|
|
||||||
public fun IntArray.asIterable(): Iterable<Int> {
|
|
||||||
return Iterable { this.iterator() }
|
|
||||||
}
|
|
||||||
/*Threre are two constuctors so we should be sure that we check required one by checking 'receiver$0$inlined' assign*/
|
|
||||||
// 1 <init>\(\[I\)V\s+L0\s+ALOAD 0\s+ALOAD 1\s+PUTFIELD InlinedConstuctorKt\$asIterable\$\$inlined\$Iterable\$1\.\$this_asIterable\$inlined : \[I
|
|
||||||
// 1 LOCALVARIABLE this LInlinedConstuctorKt\$asIterable\$\$inlined\$Iterable\$1; L0 L2 0
|
|
||||||
-18
@@ -1,18 +0,0 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
open class A(val z: String) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
inline fun test(crossinline s: () -> String) {
|
|
||||||
object : A("123") {
|
|
||||||
val x = s();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun main(args: Array<String>) {
|
|
||||||
var z = "123";
|
|
||||||
test { z }
|
|
||||||
}
|
|
||||||
|
|
||||||
/*Threre are two constuctors so we should be sure that we check LOCALVARIABLEs from same method*/
|
|
||||||
// 1 LOCALVARIABLE this LInlinedConstuctorWithSuperCallParamsKt\$main\$\$inlined\$test\$1; L0 L8 0\s+LOCALVARIABLE \$super_call_param\$1 Ljava/lang/String; L0 L8 1
|
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36648 Captured variables not optimized in JVM_IR
|
||||||
|
// TODO KT-36812 Generate proper lifetime intervals for local variables in JVM_IR
|
||||||
|
|
||||||
fun test(): java.lang.Integer {
|
fun test(): java.lang.Integer {
|
||||||
val c: java.lang.Integer
|
val c: java.lang.Integer
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36812 Generate proper lifetime intervals for local variables in JVM_IR
|
||||||
import kotlin.contracts.ExperimentalContracts
|
import kotlin.contracts.ExperimentalContracts
|
||||||
import kotlin.contracts.InvocationKind
|
import kotlin.contracts.InvocationKind
|
||||||
import kotlin.contracts.contract
|
import kotlin.contracts.contract
|
||||||
|
|||||||
+5
-1
@@ -1,5 +1,5 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36812 Generate proper lifetime intervals for local variables in JVM_IR
|
||||||
import kotlin.contracts.ExperimentalContracts
|
import kotlin.contracts.ExperimentalContracts
|
||||||
import kotlin.contracts.InvocationKind
|
import kotlin.contracts.InvocationKind
|
||||||
import kotlin.contracts.contract
|
import kotlin.contracts.contract
|
||||||
@@ -23,3 +23,7 @@ fun doIt(block: () -> Unit) {
|
|||||||
|
|
||||||
// 0 ISTORE 0
|
// 0 ISTORE 0
|
||||||
// 1 LOCALVARIABLE c Lkotlin/jvm/internal/Ref\$CharRef; L1 L3 0
|
// 1 LOCALVARIABLE c Lkotlin/jvm/internal/Ref\$CharRef; L1 L3 0
|
||||||
|
|
||||||
|
// JVM_IR_TEMPLATES
|
||||||
|
// 0 ISTORE 0
|
||||||
|
// 1 LOCALVARIABLE c Lkotlin/jvm/internal/Ref\$CharRef; L1 L4 0
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36812 Generate proper lifetime intervals for local variables in JVM_IR
|
||||||
|
|
||||||
import kotlin.random.Random
|
import kotlin.random.Random
|
||||||
|
|
||||||
|
|||||||
+1
@@ -1,4 +1,5 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36812 Generate proper lifetime intervals for local variables in JVM_IR
|
||||||
|
|
||||||
import kotlin.random.Random
|
import kotlin.random.Random
|
||||||
|
|
||||||
|
|||||||
+1
@@ -1,4 +1,5 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36812 Generate proper lifetime intervals for local variables in JVM_IR
|
||||||
|
|
||||||
import kotlin.random.Random
|
import kotlin.random.Random
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
@@ -1,4 +1,5 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36812 Generate proper lifetime intervals for local variables in JVM_IR
|
||||||
|
|
||||||
import kotlin.random.Random
|
import kotlin.random.Random
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36648 Captured variables not optimized in JVM_IR
|
||||||
|
// TODO KT-36812 Generate proper lifetime intervals for local variables in JVM_IR
|
||||||
|
|
||||||
fun test(): UInt {
|
fun test(): UInt {
|
||||||
val c: UInt
|
val c: UInt
|
||||||
|
|||||||
+2
@@ -1,4 +1,6 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36648 Captured variables not optimized in JVM_IR
|
||||||
|
// TODO KT-36812 Generate proper lifetime intervals for local variables in JVM_IR
|
||||||
|
|
||||||
fun test(): UInt {
|
fun test(): UInt {
|
||||||
var c: UInt
|
var c: UInt
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36648 Captured variables not optimized in JVM_IR
|
||||||
|
// TODO KT-36812 Generate proper lifetime intervals for local variables in JVM_IR
|
||||||
|
|
||||||
fun test(): Char {
|
fun test(): Char {
|
||||||
lateinit var c: Any
|
lateinit var c: Any
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36648 Captured variables not optimized in JVM_IR
|
||||||
|
// TODO KT-36812 Generate proper lifetime intervals for local variables in JVM_IR
|
||||||
|
|
||||||
fun test(): Char {
|
fun test(): Char {
|
||||||
val c: Char
|
val c: Char
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36812 Generate proper lifetime intervals for local variables in JVM_IR
|
||||||
|
|
||||||
fun test(): Char {
|
fun test(): Char {
|
||||||
val c: Char
|
val c: Char
|
||||||
|
|||||||
+1
@@ -1,4 +1,5 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36812 Generate proper lifetime intervals for local variables in JVM_IR
|
||||||
|
|
||||||
fun test(): Char {
|
fun test(): Char {
|
||||||
var c: Char
|
var c: Char
|
||||||
|
|||||||
+1
@@ -1,4 +1,5 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36812 Generate proper lifetime intervals for local variables in JVM_IR
|
||||||
|
|
||||||
fun test(i: Int): Char {
|
fun test(i: Int): Char {
|
||||||
val c: Char
|
val c: Char
|
||||||
|
|||||||
+1
@@ -1,4 +1,5 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36812 Generate proper lifetime intervals for local variables in JVM_IR
|
||||||
|
|
||||||
fun test(i: Int): Char {
|
fun test(i: Int): Char {
|
||||||
var c: Char
|
var c: Char
|
||||||
|
|||||||
+1
@@ -1,4 +1,5 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36813 Support code generated by JVM_IR in redundant null check optimization
|
||||||
// FILE: j/J.java
|
// FILE: j/J.java
|
||||||
|
|
||||||
package j;
|
package j;
|
||||||
|
|||||||
Vendored
+1
@@ -1,4 +1,5 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36813 Support code generated by JVM_IR in redundant null check optimization
|
||||||
// FILE: j/J.java
|
// FILE: j/J.java
|
||||||
|
|
||||||
package j;
|
package j;
|
||||||
|
|||||||
+1
@@ -1,4 +1,5 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36813 Support code generated by JVM_IR in redundant null check optimization
|
||||||
fun almostAlwaysTrue() = true
|
fun almostAlwaysTrue() = true
|
||||||
|
|
||||||
fun test() {
|
fun test() {
|
||||||
|
|||||||
+1
@@ -1,4 +1,5 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36813 Support code generated by JVM_IR in redundant null check optimization
|
||||||
fun test() {
|
fun test() {
|
||||||
lateinit var z: String
|
lateinit var z: String
|
||||||
run {
|
run {
|
||||||
|
|||||||
Vendored
+1
@@ -1,5 +1,6 @@
|
|||||||
// !API_VERSION: LATEST
|
// !API_VERSION: LATEST
|
||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36813 Support code generated by JVM_IR in redundant null check optimization
|
||||||
// FILE: j/J.java
|
// FILE: j/J.java
|
||||||
|
|
||||||
package j;
|
package j;
|
||||||
|
|||||||
+1
@@ -1,4 +1,5 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36814 Support optimized delegated properties in JVM_IR
|
||||||
|
|
||||||
class Provider<T>(val _value: T) {
|
class Provider<T>(val _value: T) {
|
||||||
inline operator fun provideDelegate(thisRef: Any?, kProperty: Any?) =
|
inline operator fun provideDelegate(thisRef: Any?, kProperty: Any?) =
|
||||||
|
|||||||
+1
@@ -1,4 +1,5 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36814 Support optimized delegated properties in JVM_IR
|
||||||
|
|
||||||
// MODULE: lib
|
// MODULE: lib
|
||||||
// FILE: lib.kt
|
// FILE: lib.kt
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36814 Support optimized delegated properties in JVM_IR
|
||||||
// WITH_RUNTIME
|
// WITH_RUNTIME
|
||||||
|
|
||||||
val topLevelLazyVal by lazy { 1 }
|
val topLevelLazyVal by lazy { 1 }
|
||||||
|
|||||||
Vendored
+1
@@ -1,4 +1,5 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
// IGNORE_BACKEND: JVM_IR
|
||||||
|
// TODO KT-36814 Support optimized delegated properties in JVM_IR
|
||||||
|
|
||||||
class Provider<T>(val _value: T) {
|
class Provider<T>(val _value: T) {
|
||||||
inline operator fun provideDelegate(thisRef: Any?, kProperty: Any) =
|
inline operator fun provideDelegate(thisRef: Any?, kProperty: Any) =
|
||||||
|
|||||||
+5
-1
@@ -1,4 +1,3 @@
|
|||||||
// IGNORE_BACKEND: JVM_IR
|
|
||||||
class Foo {
|
class Foo {
|
||||||
private companion object {
|
private companion object {
|
||||||
lateinit var x: String
|
lateinit var x: String
|
||||||
@@ -21,5 +20,10 @@ class Foo {
|
|||||||
|
|
||||||
fun consume(s: String) {}
|
fun consume(s: String) {}
|
||||||
|
|
||||||
|
// JVM_TEMPLATES
|
||||||
// There's 1 assertion in Foo.Companion.getX, and 4 in Foo.test2 (see KT-28331)
|
// There's 1 assertion in Foo.Companion.getX, and 4 in Foo.test2 (see KT-28331)
|
||||||
// 5 throwUninitializedPropertyAccessException
|
// 5 throwUninitializedPropertyAccessException
|
||||||
|
|
||||||
|
// JVM_IR_TEMPLATES
|
||||||
|
// JVM_IR invokes getX() (as suggested in KT-28331)
|
||||||
|
// 1 throwUninitializedPropertyAccessException
|
||||||
|
|||||||
@@ -3053,34 +3053,6 @@ public class BytecodeTextTestGenerated extends AbstractBytecodeTextTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@TestMetadata("compiler/testData/codegen/bytecodeText/jackAndJill")
|
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
|
||||||
public static class JackAndJill extends AbstractBytecodeTextTest {
|
|
||||||
private void runTest(String testDataFilePath) throws Exception {
|
|
||||||
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM, testDataFilePath);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testAllFilesPresentInJackAndJill() throws Exception {
|
|
||||||
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/bytecodeText/jackAndJill"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@TestMetadata("inlineDefaultBodyInClass.kt")
|
|
||||||
public void testInlineDefaultBodyInClass() throws Exception {
|
|
||||||
runTest("compiler/testData/codegen/bytecodeText/jackAndJill/inlineDefaultBodyInClass.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
@TestMetadata("inlinedConstuctor.kt")
|
|
||||||
public void testInlinedConstuctor() throws Exception {
|
|
||||||
runTest("compiler/testData/codegen/bytecodeText/jackAndJill/inlinedConstuctor.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
@TestMetadata("inlinedConstuctorWithSuperCallParams.kt")
|
|
||||||
public void testInlinedConstuctorWithSuperCallParams() throws Exception {
|
|
||||||
runTest("compiler/testData/codegen/bytecodeText/jackAndJill/inlinedConstuctorWithSuperCallParams.kt");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@TestMetadata("compiler/testData/codegen/bytecodeText/jvm8")
|
@TestMetadata("compiler/testData/codegen/bytecodeText/jvm8")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
-28
@@ -3098,34 +3098,6 @@ public class IrBytecodeTextTestGenerated extends AbstractIrBytecodeTextTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@TestMetadata("compiler/testData/codegen/bytecodeText/jackAndJill")
|
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
|
||||||
public static class JackAndJill extends AbstractIrBytecodeTextTest {
|
|
||||||
private void runTest(String testDataFilePath) throws Exception {
|
|
||||||
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testAllFilesPresentInJackAndJill() throws Exception {
|
|
||||||
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/bytecodeText/jackAndJill"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@TestMetadata("inlineDefaultBodyInClass.kt")
|
|
||||||
public void testInlineDefaultBodyInClass() throws Exception {
|
|
||||||
runTest("compiler/testData/codegen/bytecodeText/jackAndJill/inlineDefaultBodyInClass.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
@TestMetadata("inlinedConstuctor.kt")
|
|
||||||
public void testInlinedConstuctor() throws Exception {
|
|
||||||
runTest("compiler/testData/codegen/bytecodeText/jackAndJill/inlinedConstuctor.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
@TestMetadata("inlinedConstuctorWithSuperCallParams.kt")
|
|
||||||
public void testInlinedConstuctorWithSuperCallParams() throws Exception {
|
|
||||||
runTest("compiler/testData/codegen/bytecodeText/jackAndJill/inlinedConstuctorWithSuperCallParams.kt");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@TestMetadata("compiler/testData/codegen/bytecodeText/jvm8")
|
@TestMetadata("compiler/testData/codegen/bytecodeText/jvm8")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
Reference in New Issue
Block a user