blob: 7393d6d58fc6fcd94ce37fcc1636268e321a0772 [file]
// RUN_PIPELINE_TILL: FRONTEND
interface Algebra<T> {
operator fun T.plus(other: T): T
}
interface A
interface B
fun <T> injectAlgebra() {}
fun test_1(a1: A, a2: A, b1: B, b2: B) {
a1 <!UNRESOLVED_REFERENCE!>+<!> a2 // error
b1 <!UNRESOLVED_REFERENCE!>+<!> b2 // error
injectAlgebra<A>()
a1 + a2 // ok
b1 <!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>+<!> b2 // error
injectAlgebra<B>()
a1 + a2 // ok
b1 + b2 // ok
}
fun test_2(a1: A, a2: A, cond: Boolean) {
a1 <!UNRESOLVED_REFERENCE!>+<!> a2 // error
if (cond) {
injectAlgebra<A>()
a1 + a2 // ok
}
a1 <!UNRESOLVED_REFERENCE!>+<!> a2 // error
}
/* GENERATED_FIR_TAGS: additiveExpression, funWithExtensionReceiver, functionDeclaration, ifExpression,
interfaceDeclaration, nullableType, operator, typeParameter */