K2: Adjust test data after PCLA implementation [red-to-red]

^KT-59791 In Progress
This commit is contained in:
Denis.Zharkov
2023-12-13 15:09:23 +01:00
committed by Space Team
parent 276f5b26d8
commit 6052e24626
63 changed files with 272 additions and 281 deletions
@@ -15,7 +15,7 @@ fun main() {
}
<!TYPE_MISMATCH!>buildList {
add(3)
val x: String = <!INITIALIZER_TYPE_MISMATCH!>get(0)<!>
val x: String = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>get(0)<!>
}<!>
buildList {
add("3")
@@ -28,6 +28,6 @@ fun main() {
}
<!TYPE_MISMATCH!>buildList {
add("")
val x: StringBuilder = <!INITIALIZER_TYPE_MISMATCH!>get(0)<!>
val x: StringBuilder = <!INITIALIZER_TYPE_MISMATCH, TYPE_MISMATCH!>get(0)<!>
}<!>
}
@@ -1,21 +0,0 @@
// WITH_STDLIB
// FIR_DUMP
// SKIP_TXT
fun Any?.test() {}
class Bar {
fun test() {}
}
fun main() {
buildList {
add(Bar())
<!BUILDER_INFERENCE_STUB_RECEIVER!>this.get(0).test()<!> // resolved to Any?.test
}
buildList<Bar> {
add(Bar())
this.get(0).test() // resolved to Bar.test
}
}
@@ -1,4 +1,4 @@
FILE: errorOnStubReceiver.fir.kt
FILE: errorOnStubReceiver.kt
public final fun R|kotlin/Any?|.test(): R|kotlin/Unit| {
}
public final class Bar : R|kotlin/Any| {
@@ -13,7 +13,7 @@ FILE: errorOnStubReceiver.fir.kt
public final fun main(): R|kotlin/Unit| {
R|kotlin/collections/buildList|<R|Bar|>(<L> = buildList@fun R|kotlin/collections/MutableList<Bar>|.<anonymous>(): R|kotlin/Unit| <inline=Inline, kind=EXACTLY_ONCE> {
this@R|special/anonymous|.R|SubstitutionOverride<kotlin/collections/MutableList.add: R|kotlin/Boolean|>|(R|/Bar.Bar|())
this@R|special/anonymous|.R|SubstitutionOverride<kotlin/collections/MutableList.get: R|Stub (chain inference): TypeVariable(E)|>|(Int(0)).R|/test<Inapplicable(RESOLVED_WITH_ERROR): /test>#|()
this@R|special/anonymous|.R|SubstitutionOverride<kotlin/collections/MutableList.get: R|Bar|>|(Int(0)).R|/test<Inapplicable(RESOLVED_WITH_ERROR): /test>#|()
}
)
R|kotlin/collections/buildList|<R|Bar|>(<L> = buildList@fun R|kotlin/collections/MutableList<Bar>|.<anonymous>(): R|kotlin/Unit| <inline=Inline, kind=EXACTLY_ONCE> {
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// WITH_STDLIB
// FIR_DUMP
// SKIP_TXT
@@ -1 +1,3 @@
/kt47986Default.fir.kt:(175,183): error: Not enough information to infer type argument for 'K'.
/kt47986Default.fir.kt:(194,197): error: Not enough information to infer type argument for 'K'.
@@ -7,6 +7,6 @@ fun <K> Foo<K>.bar(x: Int = 1) {}
fun main() {
val x = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>buildFoo<!> {
bar()
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>bar<!>()
}
}
@@ -1 +1,3 @@
/kt47986Disabled.fir.kt:(249,257): error: Not enough information to infer type argument for 'K'.
/kt47986Disabled.fir.kt:(268,271): error: Not enough information to infer type argument for 'K'.
@@ -8,6 +8,6 @@ fun <K> Foo<K>.bar(x: Int = 1) {}
fun main() {
val x = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>buildFoo<!> {
bar()
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>bar<!>()
}
}
@@ -0,0 +1,12 @@
// !LANGUAGE: +ForbidInferringPostponedTypeVariableIntoDeclaredUpperBound
class Foo<K>
fun <K> buildFoo(builderAction: Foo<K>.() -> Unit): Foo<K> = Foo()
fun <K> Foo<K>.bar(x: Int = 1) {}
fun main() {
val x = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>buildFoo<!> {
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>bar<!>()
}
}
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
// !LANGUAGE: +ForbidInferringPostponedTypeVariableIntoDeclaredUpperBound
class Foo<K>
@@ -1 +1,3 @@
/kt47986_2.fir.kt:(187,195): error: Not enough information to infer type argument for 'K'.
/kt47986_2.fir.kt:(234,237): error: Not enough information to infer type argument for 'L'.
@@ -9,6 +9,6 @@ fun <K> id(x: K) = x
fun main() {
val x = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>buildFoo<!> { // can't infer
val y = id(::bar)
val y = id(::<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>bar<!>)
}
}
@@ -1 +1,5 @@
/kt47986_3.fir.kt:(181,189): error: Not enough information to infer type argument for 'K'.
/kt47986_3.fir.kt:(200,203): error: Not enough information to infer type argument for 'K'.
/kt47986_3.fir.kt:(200,203): error: Not enough information to infer type argument for 'N'.
@@ -7,6 +7,6 @@ fun <K: N, N> Foo<K>.bar(x: Int = 1) {}
fun main() {
val x = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>buildFoo<!> {
bar()
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>bar<!>()
}
}
@@ -0,0 +1,13 @@
class Foo<K>
fun <K> buildFoo(builderAction: Foo<K>.() -> Unit): Foo<K> = Foo()
class Bar<K>
fun <K: Bar<N>, N: Bar<K>> Foo<K>.bar(x: Int = 1) {}
fun main() {
val x = <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>buildFoo<!> {
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>bar<!>()
}
}
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
class Foo<K>
fun <K> buildFoo(builderAction: Foo<K>.() -> Unit): Foo<K> = Foo()
@@ -1 +1,3 @@
/kt51464.fir.kt:(298,307): error: Not enough information to infer type argument for 'R'.
/kt51464.fir.kt:(310,316): error: Not enough information to infer type argument for 'T'.
@@ -9,5 +9,5 @@ fun <T, R> Flow<T>.transform(transform: FlowCollector<R>.(T) -> Unit): Flow<R> =
fun f() {
fun <T> doEmit(collector: FlowCollector<T>) {}
flowOf(1).<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>transform<!> { doEmit(this) }
flowOf(1).<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>transform<!> { <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>doEmit<!>(this) }
}
@@ -19,13 +19,13 @@ fun <K> capture(x: Inv<K>): K = null as K
fun <I> id(x: I): I = null as I
fun main() {
<!NEW_INFERENCE_ERROR!>build {
build {
emit("")
// K is fixed into CapturedType(out NotFixed: TypeVariable(R)
capture(id(getOut())) // unexpected TYPE_MISMATCH (KT-63996)
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>capture<!>(<!ARGUMENT_TYPE_MISMATCH!>id(getOut())<!>) // unexpected TYPE_MISMATCH (KT-63996)
// capture(getOut()) // OK!!!
Unit
}<!>
}
build<String> {
emit("")
// K is fixed into CapturedType(out NotFixed: TypeVariable(R)
@@ -31,7 +31,7 @@ fun <E> intersect(vararg x: In<E>): E = null as E
fun test() {
val ret = build {
emit("1")
intersect(getIn(), getIn())
<!INFERRED_TYPE_VARIABLE_INTO_EMPTY_INTERSECTION_ERROR!>intersect<!>(getIn(), getIn())
intersect(getIn(), Test.foo(getIn()))
intersect(Test.foo(getIn()), Test.foo(getIn()))
intersect(Test.foo(getIn()), getIn())
@@ -46,4 +46,4 @@ fun test() {
}
""
}
}
}
@@ -17,58 +17,58 @@ fun Any.test() {}
fun Any?.test2() {}
fun test() {
val ret1 = <!NEW_INFERENCE_ERROR!>build {
val ret1 = build {
emit(1)
emit(null)
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.test()<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.test2()<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>get().test2()<!>
get()?.hashCode()
get()?.equals(1)
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()<!>?.test()
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()<!>?.test2()
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()<!>.test2()
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()<!>?.hashCode()
get()?.<!NONE_APPLICABLE!>equals<!>(1)
// there is `String?.equals` extension
get().equals("")
}<!>
val ret2 = <!NEW_INFERENCE_ERROR!>build {
get().<!NONE_APPLICABLE!>equals<!>("")
}
val ret2 = build {
emit(1)
emit(null)
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.test()<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.test2()<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>get().test2()<!>
get()?.hashCode()
get()?.equals(1)
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()<!>?.test()
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()<!>?.test2()
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()<!>.test2()
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()<!>?.hashCode()
get()?.<!NONE_APPLICABLE!>equals<!>(1)
val x = get()
x?.hashCode()
x?.equals(1)
x.equals("")
}<!>
val ret3 = <!NEW_INFERENCE_ERROR!>build {
<!BUILDER_INFERENCE_STUB_RECEIVER!>x<!>?.hashCode()
x?.<!NONE_APPLICABLE!>equals<!>(1)
x.<!NONE_APPLICABLE!>equals<!>("")
}
val ret3 = build {
emit(1)
emit(null)
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.test()<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.test2()<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>get().test2()<!>
get()?.hashCode()
get()?.equals(1)
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()<!>?.test()
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()<!>?.test2()
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()<!>.test2()
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()<!>?.hashCode()
get()?.<!NONE_APPLICABLE!>equals<!>(1)
val x = get()
x?.hashCode()
x?.equals(1)
<!BUILDER_INFERENCE_STUB_RECEIVER!>x<!>?.hashCode()
x?.<!NONE_APPLICABLE!>equals<!>(1)
if (get() == null) {}
if (<!FORBIDDEN_IDENTITY_EQUALS_WARNING!>get() === null<!>) {}
if (x != null) {
x<!UNNECESSARY_SAFE_CALL!>?.<!>hashCode()
x<!UNNECESSARY_SAFE_CALL!>?.<!>equals(1)
x.equals("")
x.hashCode()
x.toString()
x.test()
x<!UNNECESSARY_SAFE_CALL!>?.<!>test2()
x.test2()
<!BUILDER_INFERENCE_STUB_RECEIVER!>x<!><!UNNECESSARY_SAFE_CALL!>?.<!>hashCode()
x<!UNNECESSARY_SAFE_CALL!>?.<!><!NONE_APPLICABLE!>equals<!>(1)
x.<!NONE_APPLICABLE!>equals<!>("")
<!BUILDER_INFERENCE_STUB_RECEIVER!>x<!>.hashCode()
<!BUILDER_INFERENCE_STUB_RECEIVER!>x<!>.toString()
<!BUILDER_INFERENCE_STUB_RECEIVER!>x<!>.test()
<!BUILDER_INFERENCE_STUB_RECEIVER!>x<!><!UNNECESSARY_SAFE_CALL!>?.<!>test2()
<!BUILDER_INFERENCE_STUB_RECEIVER!>x<!>.test2()
}
""
}<!>
}
val ret4 = build {
emit(1)
emit(null)
@@ -104,7 +104,7 @@ fun test() {
emit(null)
val x = get()
if (x == null) {
x<!UNSAFE_CALL!>.<!>test()
x.test()
}
""
@@ -144,44 +144,44 @@ fun test() {
emit(null)
val x = get()
if (<!FORBIDDEN_IDENTITY_EQUALS_WARNING!>x === null<!>) {
x<!UNSAFE_CALL!>.<!>test()
x.test()
}
""
}
val ret408 = <!NEW_INFERENCE_ERROR!>build {
val ret408 = build {
emit(1)
emit(null)
val x = get()
<!BUILDER_INFERENCE_STUB_RECEIVER!>x.test()<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>x<!><!UNSAFE_CALL!>.<!>test()
""
}<!>
val ret41 = <!NEW_INFERENCE_ERROR!>build {
}
val ret41 = build {
emit(1)
emit(null)
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.test()<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.test2()<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>get().test2()<!>
get()?.hashCode()
get()?.equals(1)
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()<!>?.test()
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()<!>?.test2()
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()<!>.test2()
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()<!>?.hashCode()
get()?.<!NONE_APPLICABLE!>equals<!>(1)
val x = get()
x?.hashCode()
x?.equals(1)
<!BUILDER_INFERENCE_STUB_RECEIVER!>x<!>?.hashCode()
x?.<!NONE_APPLICABLE!>equals<!>(1)
if (get() == null) {}
if (<!FORBIDDEN_IDENTITY_EQUALS_WARNING!>get() === null<!>) {}
if (x == null) {
x?.hashCode()
<!BUILDER_INFERENCE_STUB_RECEIVER!>x<!><!UNNECESSARY_SAFE_CALL!>?.<!>hashCode()
}
if (x == null) {
x?.<!NONE_APPLICABLE!>equals<!>(1)
x<!UNNECESSARY_SAFE_CALL!>?.<!><!NONE_APPLICABLE!>equals<!>(1)
}
if (x == null) {
x?.test2()
<!BUILDER_INFERENCE_STUB_RECEIVER!>x<!><!UNNECESSARY_SAFE_CALL!>?.<!>test2()
}
if (x == null) {
@@ -189,15 +189,15 @@ fun test() {
}
if (<!FORBIDDEN_IDENTITY_EQUALS_WARNING!>x === null<!>) {
x?.hashCode()
<!BUILDER_INFERENCE_STUB_RECEIVER!>x<!><!UNNECESSARY_SAFE_CALL!>?.<!>hashCode()
}
if (<!FORBIDDEN_IDENTITY_EQUALS_WARNING!>x === null<!>) {
x?.<!NONE_APPLICABLE!>equals<!>(1)
x<!UNNECESSARY_SAFE_CALL!>?.<!><!NONE_APPLICABLE!>equals<!>(1)
}
if (<!FORBIDDEN_IDENTITY_EQUALS_WARNING!>x === null<!>) {
x?.test2()
<!BUILDER_INFERENCE_STUB_RECEIVER!>x<!><!UNNECESSARY_SAFE_CALL!>?.<!>test2()
}
if (<!FORBIDDEN_IDENTITY_EQUALS_WARNING!>x === null<!>) {
@@ -205,7 +205,7 @@ fun test() {
}
""
}<!>
}
val ret5 = build {
emit(1)
emit(null)
@@ -239,7 +239,7 @@ fun test() {
emit(null)
val x = get()
if (x == null) {
x<!UNSAFE_CALL!>.<!>test()
x.test()
}
""
}
@@ -276,39 +276,39 @@ fun test() {
emit(null)
val x = get()
if (<!FORBIDDEN_IDENTITY_EQUALS_WARNING!>x === null<!>) {
x<!UNSAFE_CALL!>.<!>test()
x.test()
}
""
}
val ret508 = <!NEW_INFERENCE_ERROR!>build {
val ret508 = build {
emit(1)
emit(null)
val x = get()
<!BUILDER_INFERENCE_STUB_RECEIVER!>x.test()<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>x<!><!UNSAFE_CALL!>.<!>test()
""
}<!>
val ret51 = <!NEW_INFERENCE_ERROR!>build {
}
val ret51 = build {
emit(1)
emit(null)
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.test()<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()?.test2()<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>get().test2()<!>
get()?.hashCode()
get()?.equals(1)
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()<!>?.test()
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()<!>?.test2()
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()<!>.test2()
<!BUILDER_INFERENCE_STUB_RECEIVER!>get()<!>?.hashCode()
get()?.<!NONE_APPLICABLE!>equals<!>(1)
val x = get()
x?.hashCode()
x?.equals(1)
<!BUILDER_INFERENCE_STUB_RECEIVER!>x<!>?.hashCode()
x?.<!NONE_APPLICABLE!>equals<!>(1)
if (get() == null) {}
if (<!FORBIDDEN_IDENTITY_EQUALS_WARNING!>get() === null<!>) {}
if (x == null) {
x?.hashCode()
x?.<!NONE_APPLICABLE!>equals<!>(1)
x?.test2()
<!BUILDER_INFERENCE_STUB_RECEIVER!>x<!><!UNNECESSARY_SAFE_CALL!>?.<!>hashCode()
x<!UNNECESSARY_SAFE_CALL!>?.<!><!NONE_APPLICABLE!>equals<!>(1)
<!BUILDER_INFERENCE_STUB_RECEIVER!>x<!><!UNNECESSARY_SAFE_CALL!>?.<!>test2()
x.test2()
}
""
}<!>
}
}
@@ -25,27 +25,27 @@ fun <R1 : R2, R2> build4(x: R2, block: TestInterface<R1>.() -> Unit): R1 = TODO(
fun test(a: String?) {
val ret1 = build {
emit(1)
get()<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
get()<!UNNECESSARY_SAFE_CALL!>?.<!><!NONE_APPLICABLE!>equals<!>("")
val x = get()
x<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
x<!UNNECESSARY_SAFE_CALL!>?.<!><!NONE_APPLICABLE!>equals<!>("")
x <!USELESS_ELVIS!>?: 1<!>
x<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
""
}
val ret2 = build2 {
emit(1)
get()<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
get()<!UNNECESSARY_SAFE_CALL!>?.<!><!NONE_APPLICABLE!>equals<!>("")
val x = get()
x<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
x<!UNNECESSARY_SAFE_CALL!>?.<!><!NONE_APPLICABLE!>equals<!>("")
x <!USELESS_ELVIS!>?: 1<!>
x<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
""
}
val ret3 = build3 {
emit(1)
get()<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
get()<!UNNECESSARY_SAFE_CALL!>?.<!><!NONE_APPLICABLE!>equals<!>("")
val x = get()
x<!UNNECESSARY_SAFE_CALL!>?.<!>equals("")
x<!UNNECESSARY_SAFE_CALL!>?.<!><!NONE_APPLICABLE!>equals<!>("")
x <!USELESS_ELVIS!>?: 1<!>
x<!UNNECESSARY_NOT_NULL_ASSERTION!>!!<!>
""
@@ -9,9 +9,9 @@ fun use(p: Any?) {}
fun test1() {
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>a<!> {
<!BUILDER_INFERENCE_STUB_RECEIVER!>this.get(0).extension()<!>
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>this.get(0)::extension<!>)
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>it::extension<!>)
<!BUILDER_INFERENCE_STUB_RECEIVER!>this.get(0)<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>this.get(0)<!>::extension)
use(it::extension)
}
}
@@ -19,19 +19,19 @@ fun test1() {
fun test2() {
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>a<!> {
val v = this.get(0)
<!BUILDER_INFERENCE_STUB_RECEIVER!>v.extension()<!>
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v::extension<!>)
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>it::extension<!>)
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::extension)
use(it::extension)
}
}
fun test3() {
operator fun <T> T.getValue(thisRef: Any?, prop: Any?): T = this
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>a<!> {
val v by this.get(0)
<!BUILDER_INFERENCE_STUB_RECEIVER!>v.extension()<!>
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v::extension<!>)
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>it::extension<!>)
val v by <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>this.get(0)<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::extension)
use(it::extension)
}
}
@@ -41,10 +41,10 @@ fun test4() {
operator fun <T> T.provideDelegate(thisRef: Any?, prop: Any?): Box<T> = Box(this)
operator fun <T> Box<T>.getValue(thisRef: Any?, prop: Any?): T = this.t
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>a<!> {
val v by this.get(0)
v.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>extension<!>()
use(v::extension)
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>it::extension<!>)
val v by <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>this.get(0)<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::extension)
use(it::extension)
}
}
@@ -53,20 +53,20 @@ fun <R> b(lambda: R.(List<R>) -> Unit) {}
fun test5() {
operator fun <T> T.invoke(): T = this
b {
<!BUILDER_INFERENCE_STUB_RECEIVER!>extension()<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!><!BUILDER_INFERENCE_STUB_RECEIVER!>this()<!>.extension()<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>use(<!BUILDER_INFERENCE_STUB_RECEIVER!>::extension<!>)<!>
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>b<!> {
extension()
<!CANNOT_INFER_PARAMETER_TYPE!>this<!><!NO_VALUE_FOR_PARAMETER!>()<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
use(::extension)
}
}
val <T> T.genericLambda: T.((T) -> Unit) -> Unit get() = {}
fun test6() {
b {
<!BUILDER_INFERENCE_STUB_RECEIVER!>extension()<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>genericLambda { }<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>genericLambda { it.extension() }<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>use(<!BUILDER_INFERENCE_STUB_RECEIVER!>::extension<!>)<!>
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>b<!> {
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, UNRESOLVED_REFERENCE_WRONG_RECEIVER!>extension<!>()
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>genericLambda<!> { }
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>genericLambda<!> { it.extension() }
use(::extension)
}
}
@@ -10,8 +10,8 @@ fun use(p: Any?) {}
fun test1() {
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>a<!> {
this.get(0).extension()
use(this.get(0)::extension)
<!BUILDER_INFERENCE_STUB_RECEIVER!>this.get(0)<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>this.get(0)<!>::extension)
use(it::extension)
}
}
@@ -20,8 +20,8 @@ fun test1() {
fun test2() {
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>a<!> {
val v = this.get(0)
v.extension()
use(v::extension)
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::extension)
use(it::extension)
}
}
@@ -29,9 +29,9 @@ fun test2() {
fun test3() {
operator fun <T> T.getValue(thisRef: Any?, prop: Any?): T = this
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>a<!> {
val v by this.get(0)
v.extension()
use(v::extension)
val v by <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>this.get(0)<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::extension)
use(it::extension)
}
}
@@ -42,9 +42,9 @@ fun test4() {
operator fun <T> T.provideDelegate(thisRef: Any?, prop: Any?): Box<T> = Box(this)
operator fun <T> Box<T>.getValue(thisRef: Any?, prop: Any?): T = this.t
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>a<!> {
val v by this.get(0)
v.extension()
use(v::extension)
val v by <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>this.get(0)<!>
<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
use(<!BUILDER_INFERENCE_STUB_RECEIVER!>v<!>::extension)
use(it::extension)
}
}
@@ -56,7 +56,7 @@ fun test5() {
operator fun <T> T.invoke(): T = this
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>b<!> {
extension()
this().extension()
<!CANNOT_INFER_PARAMETER_TYPE!>this<!><!NO_VALUE_FOR_PARAMETER!>()<!>.<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>extension<!>()
use(::extension)
}
}
@@ -65,9 +65,9 @@ val <T> T.genericLambda: T.((T) -> Unit) -> Unit get() = {}
fun test6() {
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>b<!> {
extension()
genericLambda { }
genericLambda { it.extension() }
<!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, UNRESOLVED_REFERENCE_WRONG_RECEIVER!>extension<!>()
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>genericLambda<!> { }
<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>genericLambda<!> { it.extension() }
use(::extension)
}
}
@@ -45,4 +45,4 @@ fun test4() {
}
}
fun fail(): Nothing = throw Exception()
fun fail(): Nothing = throw Exception()
@@ -33,7 +33,7 @@ fun foo() {
val dates3 = <!NEW_INFERENCE_ERROR!>myRun {
when {
else -> return@myRun <!RETURN_TYPE_MISMATCH!>buildList {
add(4)
add(<!ARGUMENT_TYPE_MISMATCH!>4<!>)
}<!>
}
}<!>