66 lines
1.7 KiB
Kotlin
Vendored
66 lines
1.7 KiB
Kotlin
Vendored
@CompileTimeCalculation fun ifGreaterOrEqualToZero(a: Int): Boolean {
|
|
return if (a >= 0) {
|
|
true
|
|
} else {
|
|
false
|
|
}
|
|
}
|
|
|
|
@CompileTimeCalculation fun whenGreaterOrEqualToZero(a: Int): Boolean {
|
|
return when {
|
|
a >= 0 -> true
|
|
else -> false
|
|
}
|
|
}
|
|
|
|
@CompileTimeCalculation fun whenMultiBranch(a: Int): Int {
|
|
return when (a) {
|
|
1 -> -1
|
|
2 -> -2
|
|
3 -> -3
|
|
4 -> -4
|
|
else -> 0
|
|
}
|
|
}
|
|
|
|
class A @CompileTimeCalculation constructor(@CompileTimeCalculation var a: Int)
|
|
|
|
@CompileTimeCalculation fun whenWithoutReturn(aObj: A): Int {
|
|
when (aObj.a) {
|
|
1 -> aObj.a = -1
|
|
2 -> aObj.a = -2
|
|
3 -> aObj.a = -3
|
|
4 -> aObj.a = -4
|
|
else -> aObj.a = 0
|
|
}
|
|
|
|
return aObj.a
|
|
}
|
|
|
|
@CompileTimeCalculation fun whenWithoutElse(aObj: A): Int {
|
|
when (aObj.a) {
|
|
1 -> aObj.a = -1
|
|
2 -> aObj.a = -2
|
|
3 -> aObj.a = -3
|
|
4 -> aObj.a = -4
|
|
}
|
|
|
|
return aObj.a
|
|
}
|
|
|
|
const val a = <!EVALUATED: `true`!>ifGreaterOrEqualToZero(10)<!>
|
|
const val b = <!EVALUATED: `false`!>whenGreaterOrEqualToZero(-10)<!>
|
|
const val constIf = <!EVALUATED: `True`!>if (a == true) "True" else "False"<!>
|
|
|
|
const val multi1 = <!EVALUATED: `-2`!>whenMultiBranch(2)<!>
|
|
const val multi2 = <!EVALUATED: `-4`!>whenMultiBranch(4)<!>
|
|
const val multi3 = <!EVALUATED: `0`!>whenMultiBranch(10)<!>
|
|
|
|
const val c1 = <!EVALUATED: `-1`!>whenWithoutReturn(A(1))<!>
|
|
const val c2 = <!EVALUATED: `-3`!>whenWithoutReturn(A(3))<!>
|
|
const val c3 = <!EVALUATED: `0`!>whenWithoutReturn(A(10))<!>
|
|
|
|
const val d1 = <!EVALUATED: `-1`!>whenWithoutElse(A(1))<!>
|
|
const val d2 = <!EVALUATED: `-4`!>whenWithoutElse(A(4))<!>
|
|
const val d3 = <!EVALUATED: `10`!>whenWithoutElse(A(10))<!>
|