[FIR] Resolve elvis call as special synthetic call
Before that commit we desugared `a ?: b` as
when (val elvis = a) {
null -> b
else -> elvis
}
It was incorrect, because `a` should be resolved in dependent mode,
but when it was `elvis` initializer it was resolved in independent
mode, so we can't infer type for `a` in some complex cases
This commit is contained in:
@@ -1022,6 +1022,12 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
|
||||
print("!!")
|
||||
}
|
||||
|
||||
override fun visitElvisCall(elvisCall: FirElvisCall) {
|
||||
elvisCall.lhs.accept(this)
|
||||
print(" ?: ")
|
||||
elvisCall.rhs.accept(this)
|
||||
}
|
||||
|
||||
override fun visitCallableReferenceAccess(callableReferenceAccess: FirCallableReferenceAccess) {
|
||||
callableReferenceAccess.annotations.renderAnnotations()
|
||||
callableReferenceAccess.explicitReceiver?.accept(this)
|
||||
|
||||
Reference in New Issue
Block a user