Analyze Data Flow: Respect member hierarchies
#KT-11994 In Progress
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
// FLOW: IN
|
||||
|
||||
interface A {
|
||||
fun foo() = 1
|
||||
}
|
||||
|
||||
open class B : A {
|
||||
override fun foo() = 2
|
||||
}
|
||||
|
||||
interface C : A {
|
||||
override fun foo() = 3
|
||||
}
|
||||
|
||||
class D : B(), C {
|
||||
override fun foo() = 4
|
||||
}
|
||||
|
||||
fun test(a: A, b: B, c: C, d: D) {
|
||||
val x = a.foo()
|
||||
val <caret>y = b.foo()
|
||||
val z = c.foo()
|
||||
val u = d.foo()
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
21 val <bold>y = b.foo()</bold>
|
||||
21 val y = <bold>b.foo()</bold>
|
||||
8 override fun <bold>foo() = 2</bold>
|
||||
8 override fun foo() = <bold>2</bold>
|
||||
16 override fun <bold>foo() = 4</bold>
|
||||
16 override fun foo() = <bold>4</bold>
|
||||
@@ -0,0 +1,24 @@
|
||||
// FLOW: IN
|
||||
|
||||
interface A {
|
||||
fun foo() = 1
|
||||
}
|
||||
|
||||
open class B : A {
|
||||
override fun foo() = 2
|
||||
}
|
||||
|
||||
interface C : A {
|
||||
override fun foo() = 3
|
||||
}
|
||||
|
||||
class D : B(), C {
|
||||
override fun foo() = 4
|
||||
}
|
||||
|
||||
fun test(a: A, b: B, c: C, d: D) {
|
||||
val x = a.foo()
|
||||
val y = b.foo()
|
||||
val <caret>z = c.foo()
|
||||
val u = d.foo()
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
22 val <bold>z = c.foo()</bold>
|
||||
22 val z = <bold>c.foo()</bold>
|
||||
12 override fun <bold>foo() = 3</bold>
|
||||
12 override fun foo() = <bold>3</bold>
|
||||
16 override fun <bold>foo() = 4</bold>
|
||||
16 override fun foo() = <bold>4</bold>
|
||||
@@ -0,0 +1,24 @@
|
||||
// FLOW: IN
|
||||
|
||||
interface A {
|
||||
fun foo() = 1
|
||||
}
|
||||
|
||||
open class B : A {
|
||||
override fun foo() = 2
|
||||
}
|
||||
|
||||
interface C : A {
|
||||
override fun foo() = 3
|
||||
}
|
||||
|
||||
class D : B(), C {
|
||||
override fun foo() = 4
|
||||
}
|
||||
|
||||
fun test(a: A, b: B, c: C, d: D) {
|
||||
val <caret>x = a.foo()
|
||||
val y = b.foo()
|
||||
val z = c.foo()
|
||||
val u = d.foo()
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
20 val <bold>x = a.foo()</bold>
|
||||
20 val x = <bold>a.foo()</bold>
|
||||
4 fun <bold>foo() = 1</bold>
|
||||
4 fun foo() = <bold>1</bold>
|
||||
8 override fun <bold>foo() = 2</bold>
|
||||
8 override fun foo() = <bold>2</bold>
|
||||
12 override fun <bold>foo() = 3</bold>
|
||||
12 override fun foo() = <bold>3</bold>
|
||||
16 override fun <bold>foo() = 4</bold>
|
||||
16 override fun foo() = <bold>4</bold>
|
||||
@@ -0,0 +1,19 @@
|
||||
// FLOW: IN
|
||||
|
||||
open class A {
|
||||
open fun foo() = 1
|
||||
}
|
||||
|
||||
open class B : A() {
|
||||
override fun foo() = 2
|
||||
}
|
||||
|
||||
class C : B() {
|
||||
override fun foo() = 3
|
||||
}
|
||||
|
||||
fun test(a: A, b: B, c: C) {
|
||||
val x = a.foo()
|
||||
val <caret>y = b.foo()
|
||||
val z = c.foo()
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
17 val <bold>y = b.foo()</bold>
|
||||
17 val y = <bold>b.foo()</bold>
|
||||
8 override fun <bold>foo() = 2</bold>
|
||||
8 override fun foo() = <bold>2</bold>
|
||||
12 override fun <bold>foo() = 3</bold>
|
||||
12 override fun foo() = <bold>3</bold>
|
||||
@@ -0,0 +1,17 @@
|
||||
// FLOW: IN
|
||||
|
||||
open class A {
|
||||
open val foo = 1
|
||||
}
|
||||
|
||||
open class B(override val foo: Int) : A()
|
||||
|
||||
class C : B() {
|
||||
override val foo = 3
|
||||
}
|
||||
|
||||
fun test(a: A, b: B, c: C) {
|
||||
val x = a.foo
|
||||
val <caret>y = b.foo
|
||||
val z = c.foo
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
15 val <bold>y = b.foo</bold>
|
||||
15 val y = <bold>b.foo</bold>
|
||||
7 open class B(override val <bold>foo: Int</bold>) : A()
|
||||
10 override val <bold>foo = 3</bold>
|
||||
10 override val foo = <bold>3</bold>
|
||||
@@ -0,0 +1,22 @@
|
||||
// FLOW: IN
|
||||
|
||||
open class A {
|
||||
open val foo: Int
|
||||
get() = 1
|
||||
}
|
||||
|
||||
open class B : A() {
|
||||
override val foo: Int
|
||||
get() = 2
|
||||
}
|
||||
|
||||
class C : B() {
|
||||
override val foo: Int
|
||||
get() = 3
|
||||
}
|
||||
|
||||
fun test(a: A, b: B, c: C) {
|
||||
val x = a.foo
|
||||
val <caret>y = b.foo
|
||||
val z = c.foo
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
20 val <bold>y = b.foo</bold>
|
||||
20 val y = <bold>b.foo</bold>
|
||||
9 override val <bold>foo: Int</bold>
|
||||
10 get() = <bold>2</bold>
|
||||
14 override val <bold>foo: Int</bold>
|
||||
15 get() = <bold>3</bold>
|
||||
@@ -0,0 +1,19 @@
|
||||
// FLOW: IN
|
||||
|
||||
open class A {
|
||||
open val foo = 1
|
||||
}
|
||||
|
||||
open class B : A() {
|
||||
override val foo = 2
|
||||
}
|
||||
|
||||
class C : B() {
|
||||
override val foo = 3
|
||||
}
|
||||
|
||||
fun test(a: A, b: B, c: C) {
|
||||
val x = a.foo
|
||||
val <caret>y = b.foo
|
||||
val z = c.foo
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
17 val <bold>y = b.foo</bold>
|
||||
17 val y = <bold>b.foo</bold>
|
||||
8 override val <bold>foo = 2</bold>
|
||||
8 override val foo = <bold>2</bold>
|
||||
12 override val <bold>foo = 3</bold>
|
||||
12 override val foo = <bold>3</bold>
|
||||
Reference in New Issue
Block a user