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
@@ -5,5 +5,18 @@
22 DEREFERENCE: <bold>x</bold> += 1
23 DEREFERENCE: <bold>x</bold> *= 1
25 -<bold>x</bold>
12 operator fun <bold>A</bold>.unaryMinus() = this
12 operator fun A.unaryMinus() = <bold>this</bold>
12 operator fun A.<bold>unaryMinus() = this</bold>
25 <bold>-x</bold>
26 <bold>x</bold> - 1
11 operator fun <bold>A</bold>.minus(n: Int) = this
11 operator fun A.minus(n: Int) = <bold>this</bold>
11 operator fun A.<bold>minus(n: Int) = this</bold>
26 <bold>x - 1</bold>
28 <bold>x -= 1</bold>
17 DUPLICATE: var <bold>x = A()</bold>
29 <bold>x</bold> /= 1
14 operator fun <bold>A</bold>.divAssign(n: Int) = this
14 operator fun A.divAssign(n: Int) = <bold>this</bold>
14 operator fun A.<bold>divAssign(n: Int) = this</bold>
@@ -2,10 +2,14 @@
15 DEREFERENCE: <bold>x</bold>.foo()
16 DEREFERENCE: <bold>x</bold>.bar
17 <bold>x</bold>.fooExt()
9 fun <bold>A</bold>.fooExt() = 1
18 <bold>x</bold>.barExt
10 val <bold>A</bold>.barExt: Int get() = 2
20 val y: A? = <bold>x</bold>
20 val <bold>y: A? = x</bold>
22 DEREFERENCE: <bold>y</bold>?.foo()
23 DEREFERENCE: <bold>y</bold>?.bar
24 <bold>y</bold>?.fooExt()
9 DUPLICATE: fun <bold>A</bold>.fooExt() = 1
25 <bold>y</bold>?.barExt
10 DUPLICATE: val <bold>A</bold>.barExt: Int get() = 2
@@ -0,0 +1,7 @@
// FLOW: OUT
fun String.extensionFun(): Any = this
fun foo() {
val x = <caret>"".extensionFun()
}
@@ -0,0 +1,6 @@
6 val x = <bold>""</bold>.extensionFun()
3 fun <bold>String</bold>.extensionFun(): Any = this
3 fun String.extensionFun(): Any = <bold>this</bold>
3 fun String.<bold>extensionFun(): Any = this</bold>
6 val x = "".<bold>extensionFun()</bold>
6 val <bold>x = "".extensionFun()</bold>
@@ -0,0 +1,8 @@
// FLOW: OUT
val String.extensionProp: Any
get() = this
fun foo() {
val x = <caret>"".extensionProp
}
@@ -0,0 +1,6 @@
7 val x = <bold>""</bold>.extensionProp
3 val <bold>String</bold>.extensionProp: Any
4 get() = <bold>this</bold>
4 <bold>get() = this</bold>
7 val x = "".<bold>extensionProp</bold>
7 val <bold>x = "".extensionProp</bold>
+19
View File
@@ -0,0 +1,19 @@
// FLOW: OUT
class C {
fun String.extensionFun(): Any {
with("A") {
println(this.length)
println(this@extensionFun.length)
}
return this@C
}
fun foo() {
val x = <caret>"".extensionFun()
}
}
inline fun <T, R> with(receiver: T, block: T.() -> R): R {
return receiver.block()
}
+3
View File
@@ -0,0 +1,3 @@
13 val x = <bold>""</bold>.extensionFun()
4 fun <bold>String</bold>.extensionFun(): Any {
7 println(<bold>this@extensionFun</bold>.length)