FIR: Allow selector of safe calls to be a FirStatement

It's necessary to allow a?.b += v be interpreted as a?.(b += v)
But currently FirAssignmentOperatorStatement is not FirQualifiedAccess

^KT-41034 In Progress
This commit is contained in:
Denis.Zharkov
2022-01-18 18:28:25 +03:00
parent c35b8342d8
commit 6f89f1ebf4
20 changed files with 52 additions and 55 deletions
@@ -1595,21 +1595,21 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
+"?."
val nestedQualifier = safeCallExpression.regularQualifiedAccess
if (nestedQualifier.explicitReceiver == safeCallExpression.checkedSubjectRef.value) {
when (nestedQualifier) {
val selector = safeCallExpression.selector
if (selector is FirQualifiedAccess && selector.explicitReceiver == safeCallExpression.checkedSubjectRef.value) {
when (selector) {
is FirFunctionCall -> {
return generate(nestedQualifier, skipReceiver = true)
return generate(selector, skipReceiver = true)
}
is FirQualifiedAccessExpression -> {
return generate(nestedQualifier, skipReceiver = true)
return generate(selector, skipReceiver = true)
}
}
}
+"{ "
generate(nestedQualifier)
generate(selector)
+" }"
}