[FIR] Remove FirLambdaArgumentExpression

It's not really necessary if the information about if the lambda was a
trailing lambda can be directly saved in FirAnonymousFunctionExpression.

Removing the FIR node uncovered a couple of bugs
(UNINITIALIZED_ENUM_ENTRY, ERROR_IN_CONTRACT_DESCRIPTION) that were
caused by assuming that a lambda is always a trailing lambda.

#KT-66124
This commit is contained in:
Kirill Rakhman
2024-03-04 11:59:13 +01:00
committed by Space Team
parent 1a5fa8d3f6
commit 03fc0fd381
66 changed files with 302 additions and 351 deletions
@@ -29,7 +29,7 @@ import kotlin.contracts.*
// TESTCASE NUMBER: 1
inline fun case_1(block: () -> Unit) {
contract(builder = { callsInPlaceEffectBuilder(block) })
contract(builder = { <!ERROR_IN_CONTRACT_DESCRIPTION!>callsInPlaceEffectBuilder(block)<!> })
return block()
}
@@ -41,6 +41,6 @@ inline fun case_2(block: () -> Unit) {
// TESTCASE NUMBER: 3
inline fun case_3(value_1: Int?, block: () -> Unit) {
contract({ returnsEffectBuilder(value_1); callsInPlaceEffectBuilder(block) })
contract({ <!ERROR_IN_CONTRACT_DESCRIPTION!>returnsEffectBuilder(value_1)<!>; <!ERROR_IN_CONTRACT_DESCRIPTION!>callsInPlaceEffectBuilder(block)<!> })
return block()
}
@@ -19,12 +19,12 @@ inline fun case_1(block: () -> Unit) {
// TESTCASE NUMBER: 2
inline fun case_2(block: () -> Unit) {
contract({ })
<!ERROR_IN_CONTRACT_DESCRIPTION!>contract({ })<!>
return block()
}
// TESTCASE NUMBER: 3
inline fun case_3(block: () -> Unit) {
contract(builder = { })
<!ERROR_IN_CONTRACT_DESCRIPTION!>contract(builder = { })<!>
return block()
}