blob: 0225f47ff39ca0a83ac79859065d8b7091764dfc [file]
// RUN_PIPELINE_TILL: FRONTEND
// LANGUAGE: +ContextParameters
fun String.foo(f: <!UNSUPPORTED_FEATURE!>context(String)<!> () -> Unit = {}) {
f<!NO_VALUE_FOR_PARAMETER!>()<!>
f("") // explicit argument should still work
}
fun foo(f: <!UNSUPPORTED_FEATURE!>context(String)<!> () -> Unit = {}) {
f("") // explicit argument should still work
}
interface Ctx
interface CtxA : Ctx
interface CtxB : Ctx
<!CONTEXT_PARAMETERS_UNSUPPORTED!>context(a: <!DEBUG_INFO_MISSING_UNRESOLVED!>CtxA<!>, b: <!DEBUG_INFO_MISSING_UNRESOLVED!>CtxB<!>)<!>
fun bar(f: <!UNSUPPORTED_FEATURE!>context(Ctx)<!> () -> Unit) {
f<!NO_VALUE_FOR_PARAMETER!>()<!>
f(<!UNRESOLVED_REFERENCE!>a<!>) // explicit argument should still work
f(<!UNRESOLVED_REFERENCE!>b<!>) // explicit argument should still work
}
<!CONTEXT_PARAMETERS_UNSUPPORTED!>context(_: <!DEBUG_INFO_MISSING_UNRESOLVED!>String<!>)<!>
fun baz(param: String, f: <!UNSUPPORTED_FEATURE!>context(String, Int)<!> (String) -> Unit){
with(1) {
f(<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!>param)<!>
}
}
fun <T> context(t: T, f: <!UNSUPPORTED_FEATURE!>context(T)<!> () -> Unit) = f(t)
fun qux(
f1: <!UNSUPPORTED_FEATURE!>context(String, Int)<!> () -> Unit,
f2: <!UNSUPPORTED_FEATURE!>context(String, Int)<!> (Boolean) -> Unit,
f3: <!UNSUPPORTED_FEATURE!>context(String, Int)<!> Boolean.() -> Unit,
f4: <!UNSUPPORTED_FEATURE!>context(String, Int)<!> String.() -> Unit,
f5: <!UNSUPPORTED_FEATURE!>context(String, Int)<!> String.(Boolean) -> Unit,
) {
f1("", 1)
f2("", 1, true)
f3("", 1, true)
f4("", 1, "")
f5("", 1, "", true)
f1<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!>()<!>
f2(<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!><!CONSTANT_EXPECTED_TYPE_MISMATCH!>true<!>)<!>
f3(<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!><!CONSTANT_EXPECTED_TYPE_MISMATCH!>true<!>)<!>
true.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>f3<!>()
f4(<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!>"")<!>
"".f4<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!>()<!>
f5("", <!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!><!CONSTANT_EXPECTED_TYPE_MISMATCH!>true<!>)<!>
"".f5(<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!><!CONSTANT_EXPECTED_TYPE_MISMATCH!>true<!>)<!>
with("") {
with(1) {
f1("", 1)
f2("", 1, true)
f3("", 1, true)
f4("", 1, "")
f5("", 1, "", true)
f1<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!>()<!>
f2(<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!><!CONSTANT_EXPECTED_TYPE_MISMATCH!>true<!>)<!>
f3(<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!><!CONSTANT_EXPECTED_TYPE_MISMATCH!>true<!>)<!>
with(true) {
f3<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!>()<!>
}
true.<!UNRESOLVED_REFERENCE_WRONG_RECEIVER!>f3<!>()
f4<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!>()<!>
f4(<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!>"")<!>
"".f4<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!>()<!>
f5<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!>()<!>
f5(<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!><!CONSTANT_EXPECTED_TYPE_MISMATCH!>true<!>)<!>
f5("", <!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!><!CONSTANT_EXPECTED_TYPE_MISMATCH!>true<!>)<!>
"".f5(<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!><!CONSTANT_EXPECTED_TYPE_MISMATCH!>true<!>)<!>
}
}
context("") {
with(1) {
f1("", 1)
f2("", 1, true)
f3("", 1, true)
f4("", 1, "")
f5("", 1, "", true)
f1<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!>()<!>
f2(<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!><!CONSTANT_EXPECTED_TYPE_MISMATCH!>true<!>)<!>
}
}
context("") {
context(1) {
f1<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!>()<!>
f2(<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!><!CONSTANT_EXPECTED_TYPE_MISMATCH!>true<!>)<!>
}
}
with("") {
f1(<!NO_VALUE_FOR_PARAMETER!><!CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!>)<!>
f2(<!CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!>, <!NO_VALUE_FOR_PARAMETER!><!CONSTANT_EXPECTED_TYPE_MISMATCH!>true<!>)<!>
f3(1, true)
f4(1, "")
f4(<!NO_VALUE_FOR_PARAMETER, NO_VALUE_FOR_PARAMETER!><!CONSTANT_EXPECTED_TYPE_MISMATCH!>1<!>)<!>
f5(1, "", true)
}
"".f3(1, true)
}
/* GENERATED_FIR_TAGS: funWithExtensionReceiver, functionDeclaration, functionDeclarationWithContext, functionalType,
integerLiteral, interfaceDeclaration, lambdaLiteral, nullableType, stringLiteral, typeParameter, typeWithContext,
typeWithExtension */