Skip call to the underlying value of inline class

This commit is contained in:
Mikhail Zarechenskiy
2018-02-08 12:18:52 +03:00
parent 2c279978c8
commit c86d3e354b
10 changed files with 134 additions and 6 deletions
@@ -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"
}
@@ -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"
}