Analyze Data Flow to Here to work with virtual methods

This commit is contained in:
Valentin Kipyatkov
2020-02-09 22:49:54 +02:00
parent c34286a327
commit cfa1d91aa4
15 changed files with 137 additions and 47 deletions
+18
View File
@@ -0,0 +1,18 @@
// FLOW: IN
interface I {
fun foo(<caret>p: Int)
}
class C : I {
override fun foo(p: Int) {
}
fun f() {
foo(1)
}
}
fun f(i: I) {
i.foo(2)
}
@@ -0,0 +1,8 @@
12 foo(<bold>1</bold>)
4 fun foo(<bold>p: Int</bold>)
12 foo(<bold>1</bold>)
17 i.foo(<bold>2</bold>)
4 fun foo(<bold>p: Int</bold>)
17 i.foo(<bold>2</bold>)
@@ -0,0 +1,3 @@
[NotNull Values]
4 fun foo(<bold>p: Int</bold>)
4 fun foo(<bold>p: Int</bold>)
+3
View File
@@ -0,0 +1,3 @@
4 fun foo(<bold>p: Int</bold>)
12 foo(<bold>1</bold>)
17 i.foo(<bold>2</bold>)
@@ -1,8 +1,9 @@
4 fun bar(<bold>n: Int</bold>) = n
5 val x = (::bar)(<bold>1</bold>)
5 val <bold>x = (::bar)(1)</bold>
5 val x = <bold>(::bar)(1)</bold>
5 [LAMBDA] val x = <bold>(::bar)</bold>(1)
4 fun <bold>bar(n: Int) = n</bold>
4 fun bar(n: Int) = <bold>n</bold>
4 fun bar(<bold>n: Int</bold>) = n
5 val x = (::bar)(<bold>1</bold>)
@@ -4,3 +4,4 @@
4 fun <bold>bar(n: Int) = n</bold>
4 fun bar(n: Int) = <bold>n</bold>
4 fun bar(<bold>n: Int</bold>) = n
5 val x = (::bar)(<bold>1</bold>)
+19
View File
@@ -0,0 +1,19 @@
// FLOW: IN
interface I {
fun foo(p: Int)
}
class C : I {
override fun foo(p: Int) {
println(<caret>p)
}
fun f() {
foo(1)
}
}
fun f(i: I) {
i.foo(2)
}
+10
View File
@@ -0,0 +1,10 @@
13 foo(<bold>1</bold>)
9 println(<bold>p</bold>)
8 override fun foo(<bold>p: Int</bold>) {
13 foo(<bold>1</bold>)
18 i.foo(<bold>2</bold>)
9 println(<bold>p</bold>)
8 override fun foo(<bold>p: Int</bold>) {
18 i.foo(<bold>2</bold>)
@@ -0,0 +1,3 @@
[NotNull Values]
9 println(<bold>p</bold>)
9 println(<bold>p</bold>)
+4
View File
@@ -0,0 +1,4 @@
9 println(<bold>p</bold>)
8 override fun foo(<bold>p: Int</bold>) {
13 foo(<bold>1</bold>)
18 i.foo(<bold>2</bold>)