Extension properties in class: don't put receiver on stack for GETFIELD/PUTFIELD instruction
#KT-3031 Fixed
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
class Test {
|
||||
val Int.foo: String = "OK"
|
||||
|
||||
fun test(): String {
|
||||
return 1.foo
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
return Test().test()
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
class Test {
|
||||
var Double.fooDouble: String = "fail"
|
||||
var Long.fooLong: String = "fail"
|
||||
|
||||
fun test(): String {
|
||||
val d = 1.0
|
||||
d.fooDouble = "O"
|
||||
val l = 1.toLong()
|
||||
l.fooLong = "K"
|
||||
return d.fooDouble + l.fooLong
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
return Test().test()
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
class Test {
|
||||
var Int.foo: String = "fail"
|
||||
|
||||
fun test(): String {
|
||||
val i = 1
|
||||
i.foo = "OK"
|
||||
return i.foo
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
return Test().test()
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
class Test {
|
||||
val Int.foo: String = "OK"
|
||||
get() {
|
||||
val a = $foo
|
||||
return "OK"
|
||||
}
|
||||
|
||||
fun test(): String {
|
||||
return 1.foo
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
return Test().test()
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
class Test {
|
||||
private val Int.foo: String = "OK"
|
||||
get() {
|
||||
val a = $foo
|
||||
return "OK"
|
||||
}
|
||||
|
||||
fun test(): String {
|
||||
return 1.foo
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
return Test().test()
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
class Test {
|
||||
var Int.foo: String = "OK"
|
||||
private set(str: String) {
|
||||
$foo = str
|
||||
}
|
||||
|
||||
fun test(): String {
|
||||
val i = 1
|
||||
i.foo = "OK"
|
||||
return i.foo
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
return Test().test()
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
class Test {
|
||||
var Int.foo: String = "fail"
|
||||
set(str: String) {
|
||||
$foo = str
|
||||
}
|
||||
|
||||
fun test(): String {
|
||||
val i = 1
|
||||
i.foo = "OK"
|
||||
return i.foo
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
return Test().test()
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
val Int.foo: String = "OK"
|
||||
|
||||
fun box(): String {
|
||||
return 1.foo
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
var Double.fooDouble: String = "fail"
|
||||
var Long.fooLong: String = "fail"
|
||||
|
||||
fun box(): String {
|
||||
val d = 1.0
|
||||
d.fooDouble = "O"
|
||||
val l = 1.toLong()
|
||||
l.fooLong = "K"
|
||||
return d.fooDouble + l.fooLong
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
var Double.fooDouble: String = "fail"
|
||||
set(str: String) {
|
||||
$fooDouble = str
|
||||
}
|
||||
|
||||
var Long.fooLong: String = "fail"
|
||||
set(str: String) {
|
||||
$fooLong = str
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val d = 1.0
|
||||
d.fooDouble = "O"
|
||||
val l = 1.toLong()
|
||||
l.fooLong = "K"
|
||||
return d.fooDouble + l.fooLong
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
val Int.foo: String = "OK"
|
||||
get() {
|
||||
return $foo
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
return 1.foo
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
var Int.foo: String = "fail"
|
||||
set(str: String) {
|
||||
$foo = str
|
||||
}
|
||||
|
||||
fun box(): String {
|
||||
val i = 1
|
||||
i.foo = "OK"
|
||||
return i.foo
|
||||
}
|
||||
Reference in New Issue
Block a user