Data Inflow: Support delegated assignments

#KT-19089 Fixed
This commit is contained in:
Alexey Sedunov
2017-11-09 17:43:13 +03:00
parent 9d482bbbb1
commit 56746380f7
6 changed files with 101 additions and 0 deletions
@@ -0,0 +1,26 @@
// FLOW: IN
class Delegate {
private var _value: String = ""
operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value
operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
_value = value
}
}
class AClass(name1: String){
var name by Delegate()
init {
name = name1
}
fun uses(){
name = "bye"
println("Now my name is '$name'")
}
}
fun main(args: Array<String>) {
val a = AClass("hello")
println("My name is '${a.<caret>name}'")
}
@@ -0,0 +1,12 @@
25 println("My name is '${a.<bold>name</bold>}'")
12 var <bold>name by Delegate()</bold>
5 operator fun <bold>getValue(thisRef: Any?, property: KProperty<*>) = _value</bold>
5 operator fun getValue(thisRef: Any?, property: KProperty<*>) = <bold>_value</bold>
4 private var <bold>_value: String = ""</bold>
4 private var _value: String = <bold>""</bold>
7 _value = <bold>value</bold>
6 operator fun setValue(thisRef: Any?, property: KProperty<*>, <bold>value: String</bold>) {
14 name = <bold>name1</bold>
11 class AClass(<bold>name1: String</bold>){
24 val a = AClass(<bold>"hello"</bold>)
18 name = <bold>"bye"</bold>
@@ -0,0 +1,26 @@
// FLOW: IN
class Delegate {
private var _value: String = ""
operator fun getValue(thisRef: Any?, property: KProperty<*>) = _value
operator fun setValue(thisRef: Any?, property: KProperty<*>, value: String) {
_value = value
}
}
class AClass(name1: String){
var name by Delegate()
init {
name = name1
}
fun uses(){
name = "bye"
println("Now my name is '$<caret>name'")
}
}
fun main(args: Array<String>) {
val a = AClass("hello")
println("My name is '${a.name}'")
}
@@ -0,0 +1,12 @@
19 println("Now my name is '$<bold>name</bold>'")
12 var <bold>name by Delegate()</bold>
5 operator fun <bold>getValue(thisRef: Any?, property: KProperty<*>) = _value</bold>
5 operator fun getValue(thisRef: Any?, property: KProperty<*>) = <bold>_value</bold>
4 private var <bold>_value: String = ""</bold>
4 private var _value: String = <bold>""</bold>
7 _value = <bold>value</bold>
6 operator fun setValue(thisRef: Any?, property: KProperty<*>, <bold>value: String</bold>) {
14 name = <bold>name1</bold>
11 class AClass(<bold>name1: String</bold>){
24 val a = AClass(<bold>"hello"</bold>)
18 name = <bold>"bye"</bold>