Skip call to the underlying value of inline class
This commit is contained in:
+16
@@ -0,0 +1,16 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
inline class UInt(val value: Int) {
|
||||
operator fun plus(other: UInt) = UInt(value + other.value)
|
||||
fun otherValue(other: UInt) = other.value
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val a = UInt(10)
|
||||
val b = UInt(20)
|
||||
if (a.otherValue(b) != 20) return "fail 1"
|
||||
|
||||
if ((a + b).value != 30) return "fail 2"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
inline class UInt(val value: Int)
|
||||
|
||||
fun box(): String {
|
||||
val a = UInt(123)
|
||||
if(a.value != 123) return "fail"
|
||||
|
||||
val c = a.value.hashCode()
|
||||
if (c.hashCode() != 123.hashCode()) return "fail"
|
||||
|
||||
val b = UInt(100).value + a.value
|
||||
if (b != 223) return "faile"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Vendored
+17
@@ -0,0 +1,17 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
inline class UInt(val value: Int)
|
||||
|
||||
fun test(u1: UInt, u2: UInt) {
|
||||
val a = u1.value
|
||||
|
||||
val b = u1.value.hashCode() // box int to call hashCode
|
||||
val c = u1.value + u2.value
|
||||
}
|
||||
|
||||
// 0 INVOKESTATIC UInt\$Erased.getValue
|
||||
// 0 INVOKESTATIC UInt\$Erased.box
|
||||
// 0 INVOKEVIRTUAL UInt.unbox
|
||||
|
||||
// 1 valueOf
|
||||
// 0 intValue
|
||||
Reference in New Issue
Block a user