FIR: Fix false-positive successful resolution of call with lambda receiver

Do not try to integrate/postpone receiver expression to the base system
Receiver should be resolved independently anyway
This commit is contained in:
Denis Zharkov
2020-11-12 11:29:20 +03:00
parent 396e799e5d
commit e2099a0307
6 changed files with 51 additions and 2 deletions
@@ -0,0 +1,14 @@
fun (() -> String).foo() {}
fun String.foo() {}
fun String.bar() {}
fun main1() {
{ "" }.foo()
"".foo()
}
fun main2() {
{ "" }.<!INAPPLICABLE_CANDIDATE!>bar<!>()
"".bar()
}
@@ -0,0 +1,21 @@
FILE: lambdaAsReceiver.kt
public final fun R|() -> kotlin/String|.foo(): R|kotlin/Unit| {
}
public final fun R|kotlin/String|.foo(): R|kotlin/Unit| {
}
public final fun R|kotlin/String|.bar(): R|kotlin/Unit| {
}
public final fun main1(): R|kotlin/Unit| {
fun <anonymous>(): R|kotlin/String| {
^ String()
}
.R|/foo|()
String().R|/foo|()
}
public final fun main2(): R|kotlin/Unit| {
fun <anonymous>(): R|kotlin/String| {
^ String()
}
.<Inapplicable(INAPPLICABLE_WRONG_RECEIVER): /bar>#()
String().R|/bar|()
}