Analyze Data Flow: Support properties with custom accessors
#KT-11994 In Progress
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
// FLOW: IN
|
||||
|
||||
class A(var b: Boolean) {
|
||||
var foo: Int
|
||||
set(value) {
|
||||
field = if (b) value else 0
|
||||
}
|
||||
|
||||
fun test() {
|
||||
val x = <caret>foo
|
||||
foo = 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
10 val x = <bold>foo</bold>
|
||||
4 var <bold>foo: Int</bold>
|
||||
6 field = <bold>if (b) value else 0</bold>
|
||||
6 field = if (b) <bold>value</bold> else 0
|
||||
5 set(<bold>value</bold>) {
|
||||
11 foo = <bold>1</bold>
|
||||
6 field = if (b) value else <bold>0</bold>
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
// FLOW: IN
|
||||
|
||||
import kotlin.reflect.KProperty
|
||||
|
||||
object D {
|
||||
operator fun getValue(thisRef: Any?, property: KProperty<*>) = 1
|
||||
}
|
||||
|
||||
val foo: Int by D
|
||||
|
||||
fun test() {
|
||||
val <caret>x = foo
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
12 val <bold>x = foo</bold>
|
||||
12 val x = <bold>foo</bold>
|
||||
9 val <bold>foo: Int by D</bold>
|
||||
6 operator fun <bold>getValue(thisRef: Any?, property: KProperty<*>) = 1</bold>
|
||||
6 operator fun getValue(thisRef: Any?, property: KProperty<*>) = <bold>1</bold>
|
||||
@@ -0,0 +1,14 @@
|
||||
// FLOW: IN
|
||||
|
||||
class A(var b: Boolean) {
|
||||
var foo: Int
|
||||
get() = if (b) field else 0
|
||||
set(value) {
|
||||
field = if (b) value else 0
|
||||
}
|
||||
|
||||
fun test() {
|
||||
val x = <caret>foo
|
||||
foo = 1
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
11 val x = <bold>foo</bold>
|
||||
4 var <bold>foo: Int</bold>
|
||||
5 get() = <bold>if (b) field else 0</bold>
|
||||
5 get() = if (b) <bold>field</bold> else 0
|
||||
7 field = <bold>if (b) value else 0</bold>
|
||||
7 field = if (b) <bold>value</bold> else 0
|
||||
6 set(<bold>value</bold>) {
|
||||
12 foo = <bold>1</bold>
|
||||
7 field = if (b) value else <bold>0</bold>
|
||||
5 get() = if (b) field else <bold>0</bold>
|
||||
@@ -0,0 +1,8 @@
|
||||
// FLOW: IN
|
||||
|
||||
val foo: Int
|
||||
get() = 0
|
||||
|
||||
fun test() {
|
||||
val <caret>x = foo
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
7 val <bold>x = foo</bold>
|
||||
7 val x = <bold>foo</bold>
|
||||
3 val <bold>foo: Int</bold>
|
||||
4 get() = <bold>0</bold>
|
||||
@@ -0,0 +1,10 @@
|
||||
// FLOW: IN
|
||||
|
||||
val foo: Int
|
||||
get(): Int {
|
||||
return 0
|
||||
}
|
||||
|
||||
fun test() {
|
||||
val <caret>x = foo
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
9 val <bold>x = foo</bold>
|
||||
9 val x = <bold>foo</bold>
|
||||
3 val <bold>foo: Int</bold>
|
||||
5 return <bold>0</bold>
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
// FLOW: IN
|
||||
|
||||
class A(var b: Boolean) {
|
||||
var foo: Int
|
||||
get() = 1
|
||||
set(value) {
|
||||
field = value + 1
|
||||
}
|
||||
|
||||
fun test() {
|
||||
val x = <caret>foo
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
11 val x = <bold>foo</bold>
|
||||
4 var <bold>foo: Int</bold>
|
||||
5 get() = <bold>1</bold>
|
||||
Reference in New Issue
Block a user