Files
kotlin-fork/idea/testData/quickfix/addSemicolonBeforeLambdaExpression/complex.kt
T
Pavel Kirpichenkov 9a231bbbfa Update trailing lambda quickfix, add tests
Case of incorrect call expression as the receiver of dot-qualified expression
was not handled properly.

Now the following order is used:
- If parent is a call expression or if this call is a receiver of parent
dot-qualified expression, parent must get last lambda as a new receiver;
- Otherwise, if parent is a dot-qualified expression, this call is in selector position.
Then grandparent is checked for being call or dot-qualified expression. If so, trailing
lambda must become grandparent's new receiver. If not, trailing nodes become standalone
epressions after parent.
- Otherwise, incorrect call expression is a standalone expression, so trailing nodes
may be lifted and put after it.
2019-11-13 11:00:01 +03:00

15 lines
333 B
Kotlin
Vendored

// "Terminate preceding call with semicolon" "true"
fun foo() {}
fun String.withLambda(lambda: (String) -> Unit) {}
fun test {
{ { "test" } }.invoke()().toString().withLambda()
// comment and formatting
{} // correct trailing lambda
/*
block comment
*/
{ { { foo() }<caret> } }.invoke()().invoke()
}