Data flow to/from here: supported expected/actual declarations and extension receivers

This commit is contained in:
Valentin Kipyatkov
2020-04-09 22:01:22 +03:00
parent bfa3fb0589
commit 90188ef44f
78 changed files with 1704 additions and 801 deletions
@@ -0,0 +1,9 @@
package sample
expect class ExpectClass() {
fun foo(p: Any)
}
fun f(c: ExpectClass) {
c.foo(1)
}
@@ -0,0 +1,9 @@
// FLOW: IN
package sample
actual class ExpectClass {
actual fun foo(p: Any) {
println(<caret>p)
}
}
@@ -0,0 +1,3 @@
7 println(<bold>p</bold>)
6 actual fun foo(<bold>p: Any</bold>) {
8 c.foo(<bold>1</bold>)
@@ -0,0 +1,5 @@
expect fun foo(p: Any)
fun bar() {
foo(1)
}
@@ -0,0 +1,5 @@
// FLOW: IN
actual fun foo(p: Any) {
println(<caret>p)
}
@@ -0,0 +1,3 @@
4 println(<bold>p</bold>)
3 actual fun foo(<bold>p: Any</bold>) {
4 foo(<bold>1</bold>)
@@ -0,0 +1,11 @@
// FLOW: OUT
package sample
expect class ExpectClass() {
fun foo(p: Any)
}
fun f(c: ExpectClass) {
c.foo(<caret>1)
}
@@ -0,0 +1,7 @@
package sample
actual class ExpectClass {
actual fun foo(p: Any) {
println(p)
}
}
@@ -0,0 +1,4 @@
10 c.foo(<bold>1</bold>)
6 fun foo(<bold>p: Any</bold>)
4 actual fun foo(<bold>p: Any</bold>) {
5 println(<bold>p</bold>)
@@ -0,0 +1,8 @@
// FLOW: OUT
expect fun Any.foo(): Any
fun bar() {
val result = <caret>1.foo()
println(result)
}
@@ -0,0 +1,3 @@
actual fun Any.foo(): Any {
return this
}
@@ -0,0 +1,8 @@
6 val result = <bold>1</bold>.foo()
3 expect fun <bold>Any</bold>.foo(): Any
1 actual fun <bold>Any</bold>.foo(): Any {
2 return <bold>this</bold>
1 actual fun Any.<bold>foo(): Any {</bold>
6 val result = 1.<bold>foo()</bold>
6 val <bold>result = 1.foo()</bold>
7 println(<bold>result</bold>)
@@ -0,0 +1,7 @@
// FLOW: OUT
expect fun foo(p: Any)
fun bar() {
foo(<caret>1)
}
@@ -0,0 +1,3 @@
actual fun foo(p: Any) {
println(p)
}
@@ -0,0 +1,4 @@
6 foo(<bold>1</bold>)
3 expect fun foo(<bold>p: Any</bold>)
1 actual fun foo(<bold>p: Any</bold>) {
2 println(<bold>p</bold>)
@@ -0,0 +1,8 @@
// FLOW: IN
expect fun foo(p: Any): Any
fun bar() {
val result = foo(1)
println(<caret>result)
}
@@ -0,0 +1,3 @@
actual fun foo(p: Any): Any {
return p
}
@@ -0,0 +1,8 @@
7 println(<bold>result</bold>)
6 val <bold>result = foo(1)</bold>
6 val result = <bold>foo(1)</bold>
1 actual fun <bold>foo(p: Any): Any {</bold>
2 return <bold>p</bold>
1 actual fun foo(<bold>p: Any</bold>): Any {
6 val result = foo(<bold>1</bold>)
3 expect fun <bold>foo(p: Any): Any</bold>
@@ -0,0 +1,8 @@
// FLOW: OUT
expect fun foo(p: Any): Any
fun bar() {
val result = foo(<caret>1)
println(result)
}
@@ -0,0 +1,3 @@
actual fun foo(p: Any): Any {
return p
}
@@ -0,0 +1,8 @@
6 val result = foo(<bold>1</bold>)
3 expect fun foo(<bold>p: Any</bold>): Any
1 actual fun foo(<bold>p: Any</bold>): Any {
2 return <bold>p</bold>
1 actual fun <bold>foo(p: Any): Any {</bold>
6 val result = <bold>foo(1)</bold>
6 val <bold>result = foo(1)</bold>
7 println(<bold>result</bold>)
@@ -0,0 +1,8 @@
// FLOW: IN
expect val Int.property: Any
fun bar() {
val result = 1.property
println(<caret>result)
}
@@ -0,0 +1,2 @@
actual val Int.property: Any
get() = this
@@ -0,0 +1,8 @@
7 println(<bold>result</bold>)
6 val <bold>result = 1.property</bold>
6 val result = <bold>1.property</bold>
1 actual val Int.<bold>property: Any</bold>
2 get() = <bold>this</bold>
1 actual val <bold>Int</bold>.property: Any
6 val result = <bold>1</bold>.property
3 expect val Int.<bold>property: Any</bold>
@@ -0,0 +1,8 @@
// FLOW: OUT
expect val Int.property: Any
fun bar() {
val result = <caret>1.property
println(result)
}
@@ -0,0 +1,2 @@
actual val Int.property: Any
get() = this
@@ -0,0 +1,8 @@
6 val result = <bold>1</bold>.property
3 expect val <bold>Int</bold>.property: Any
1 actual val <bold>Int</bold>.property: Any
2 get() = <bold>this</bold>
2 <bold>get() = this</bold>
6 val result = 1.<bold>property</bold>
6 val <bold>result = 1.property</bold>
7 println(<bold>result</bold>)