[FIR] Resolve rhs of += in dependent context

This commit is contained in:
Dmitriy Novozhilov
2020-07-06 12:51:47 +03:00
parent 943b59b5d8
commit 29849b1330
15 changed files with 303 additions and 53 deletions
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM
// IGNORE_BACKEND: JVM_IR
@@ -1,4 +1,3 @@
// IGNORE_BACKEND_FIR: JVM_IR
class MyList<T>
operator fun <T> MyList<T>.plusAssign(element: T) {}
@@ -5,5 +5,5 @@ fun <T> f(): R<T> = R<T>()
operator fun Int.plusAssign(y: R<Int>) {}
fun box() {
<!INAPPLICABLE_CANDIDATE!>1 += f()<!>
1 += f()
}
@@ -29,7 +29,7 @@ class Test()
fun test()
{
val control = Control()
control.MouseMoved += { <!UNRESOLVED_REFERENCE!>it<!>.<!UNRESOLVED_REFERENCE!>X<!> } // here
control.MouseMoved += { it.X } // here
control.MouseMoved.plusAssign( { it.X } ) // ok
}
}
@@ -37,6 +37,6 @@ class B {
}
fun foo3(x: B) = {
<!VARIABLE_EXPECTED!>x<!> += { "" }
<!VARIABLE_EXPECTED!>x<!> += id { "" }
x += { "" }
x += id { "" }
}
@@ -13,8 +13,8 @@ fun <T> id(x: T) = x
fun main() {
var newValue = A()
<!INAPPLICABLE_CANDIDATE!>newValue += id { total -> A() }<!>
<!INAPPLICABLE_CANDIDATE!>newValue += id(fun(total) = A())<!>
<!INAPPLICABLE_CANDIDATE!>newValue += id(fun(total): A { return A() })<!>
<!ASSIGN_OPERATOR_AMBIGUITY!>newValue += id { total -> A() }<!>
<!ASSIGN_OPERATOR_AMBIGUITY!>newValue += id(fun(total) = A())<!>
<!ASSIGN_OPERATOR_AMBIGUITY!>newValue += id(fun(total): A { return A() })<!>
<!ASSIGN_OPERATOR_AMBIGUITY!>newValue += id(::foo)<!>
}