blob: 6fa3252ae7ac4297ff3e62775e023ff7f24cf148 [file]
// RUN_PIPELINE_TILL: FRONTEND
// LANGUAGE: +WhenGuards
// DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_EXPRESSION
// ISSUES: KT-70133
inline fun invokeInline(x: () -> Unit, y: Any) {
x()
}
fun invokeLater(x: () -> Unit, y: Any) {
x()
}
fun test1(y: Any) {
val x: String
invokeInline(
{ <!UNINITIALIZED_VARIABLE!>x<!>.length },
when(y) {
is String if { <!CAPTURED_VAL_INITIALIZATION!>x<!>=" "; true }() -> ""
else -> "1"
}
)
}
fun test2(y: Any) {
val x: String
invokeLater(
{ <!UNINITIALIZED_VARIABLE!>x<!>.length },
when(y) {
is String if { <!CAPTURED_VAL_INITIALIZATION!>x<!>=" "; true }() -> ""
else -> "1"
}
)
}
fun test3() {
val x: String
invokeInline(
{ <!UNINITIALIZED_VARIABLE!>x<!>.length },
fun() {
if (true) {
<!CAPTURED_VAL_INITIALIZATION!>x<!> = "";""
} else {
<!CAPTURED_VAL_INITIALIZATION!>x<!> = "";""
}
}
)
}
fun test4() {
val x: String
invokeLater(
{ <!UNINITIALIZED_VARIABLE!>x<!>.length },
fun() {
if (true) {
<!CAPTURED_VAL_INITIALIZATION!>x<!> = "";""
} else {
<!CAPTURED_VAL_INITIALIZATION!>x<!> = "";""
}
}
)
}
fun test5() {
val x: String
invokeInline(
{ <!UNINITIALIZED_VARIABLE!>x<!>.length },
object {
fun foo() {
<!CAPTURED_VAL_INITIALIZATION!>x<!> = ""
}
}.foo()
)
}
fun test6() {
val x: String
invokeLater(
{ <!UNINITIALIZED_VARIABLE!>x<!>.length },
object {
fun foo() {
<!CAPTURED_VAL_INITIALIZATION!>x<!> = ""
}
}.foo()
)
}
fun test7() {
val x: String
invokeInline(
{ <!UNINITIALIZED_VARIABLE!>x<!>.length },
{ <!CAPTURED_VAL_INITIALIZATION!>x<!> = "" ; "" } <!USELESS_ELVIS!>?: { <!CAPTURED_VAL_INITIALIZATION!>x<!> = "" ; "" }<!>
)
}
fun test8() {
val x: String
invokeLater(
{ <!UNINITIALIZED_VARIABLE!>x<!>.length },
{ <!CAPTURED_VAL_INITIALIZATION!>x<!> = "" ; "" } <!USELESS_ELVIS!>?: { <!CAPTURED_VAL_INITIALIZATION!>x<!> = "" ; "" }<!>
)
}
/* GENERATED_FIR_TAGS: andExpression, anonymousFunction, anonymousObjectExpression, assignment, elvisExpression,
functionDeclaration, functionalType, guardCondition, ifExpression, inline, isExpression, lambdaLiteral, localProperty,
propertyDeclaration, stringLiteral, whenExpression, whenWithSubject */