Put default value to vars iff they are not boxed
#KT-24672 Fixed
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
|
||||
fun test(): java.lang.Integer {
|
||||
var c: java.lang.Integer
|
||||
run {
|
||||
c = java.lang.Integer(1)
|
||||
}
|
||||
return c
|
||||
}
|
||||
|
||||
// 1 ASTORE 0
|
||||
// 1 LOCALVARIABLE c Lkotlin/jvm/internal/Ref\$ObjectRef; L1 L11 0
|
||||
@@ -0,0 +1,25 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
|
||||
import kotlin.contracts.ExperimentalContracts
|
||||
import kotlin.contracts.InvocationKind
|
||||
import kotlin.contracts.contract
|
||||
|
||||
@ExperimentalContracts
|
||||
fun test(): Char {
|
||||
var c: Char
|
||||
doIt {
|
||||
c = ' '
|
||||
}
|
||||
return c
|
||||
}
|
||||
|
||||
@ExperimentalContracts
|
||||
fun doIt(block: () -> Unit) {
|
||||
contract {
|
||||
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
|
||||
}
|
||||
block()
|
||||
}
|
||||
|
||||
// 0 ISTORE 0
|
||||
// 1 LOCALVARIABLE c Lkotlin/jvm/internal/Ref\$CharRef; L1 L3 0
|
||||
@@ -0,0 +1,18 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
|
||||
inline fun <reified T> foo(default: T): T {
|
||||
var t: T
|
||||
run {
|
||||
t = default
|
||||
}
|
||||
return t
|
||||
}
|
||||
|
||||
fun test() {
|
||||
foo(0.0f)
|
||||
}
|
||||
|
||||
// two in foo and two in test
|
||||
|
||||
// 2 ASTORE 2
|
||||
// 1 LOCALVARIABLE t\$iv Lkotlin/jvm/internal/Ref\$ObjectRef; L3 L13 2
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
|
||||
import kotlin.random.Random
|
||||
|
||||
fun test(): Char {
|
||||
var c: Char
|
||||
if (Random.nextBoolean()) {
|
||||
c = '1'
|
||||
} else {
|
||||
c = '2'
|
||||
}
|
||||
return c
|
||||
}
|
||||
|
||||
// 3 ISTORE 0
|
||||
// 1 LOCALVARIABLE c C L1 L7 0
|
||||
Vendored
+16
@@ -0,0 +1,16 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
|
||||
import kotlin.random.Random
|
||||
|
||||
fun test(): Char {
|
||||
var c: Char
|
||||
if (Random.nextBoolean())
|
||||
c = '1'
|
||||
else
|
||||
c = '2'
|
||||
|
||||
return c
|
||||
}
|
||||
|
||||
// 3 ISTORE 0
|
||||
// 1 LOCALVARIABLE c C L1 L5 0
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
|
||||
fun test(): UInt {
|
||||
var c: UInt
|
||||
run {
|
||||
c = 1u
|
||||
}
|
||||
return c
|
||||
}
|
||||
|
||||
// 1 ASTORE 0
|
||||
// 1 LOCALVARIABLE c Lkotlin/jvm/internal/Ref\$IntRef; L1 L11 0
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
|
||||
fun test(): Char {
|
||||
var c: Char
|
||||
val l = Any()
|
||||
val l1 = Any()
|
||||
val l2 = Any()
|
||||
val l3 = Any()
|
||||
val l4 = Any()
|
||||
val l5 = Any()
|
||||
val l6 = Any()
|
||||
val l7 = Any()
|
||||
val l8 = Any()
|
||||
val l11 = Any()
|
||||
val l12 = Any()
|
||||
val l13 = Any()
|
||||
val l14 = Any()
|
||||
c = '1'
|
||||
return c
|
||||
}
|
||||
|
||||
// 2 ISTORE 0
|
||||
// 1 LOCALVARIABLE c C L1 L16 0
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
|
||||
fun test(i: Int): Char {
|
||||
var c: Char
|
||||
when (i) {
|
||||
1 -> c = '1'
|
||||
2 -> c = '2'
|
||||
3 -> c = '3'
|
||||
4 -> c = '4'
|
||||
5 -> c = '5'
|
||||
6 -> c = '6'
|
||||
7 -> c = '7'
|
||||
8 -> c = '8'
|
||||
9 -> c = '9'
|
||||
0 -> c = '0'
|
||||
else -> c = ' '
|
||||
}
|
||||
return c
|
||||
}
|
||||
|
||||
// 12 ISTORE 1
|
||||
// 1 LOCALVARIABLE c C L1 L16 1
|
||||
Reference in New Issue
Block a user