Control flow graph for safe calls corrected #KT-10913 Fixed
Also #KT-10186 Fixed Also #KT-5198 Fixed
This commit is contained in:
committed by
Mikhail Glukhikh
parent
5ae394fec0
commit
a08b8f43b2
@@ -947,10 +947,19 @@ class ControlFlowProcessor(private val trace: BindingTrace) {
|
||||
mark(expression)
|
||||
val selectorExpression = expression.selectorExpression
|
||||
val receiverExpression = expression.receiverExpression
|
||||
val safe = expression is KtSafeQualifiedExpression
|
||||
|
||||
// todo: replace with selectorExpresion != null after parser is fixed
|
||||
if (selectorExpression is KtCallExpression || selectorExpression is KtSimpleNameExpression) {
|
||||
generateInstructions(selectorExpression)
|
||||
if (!safe) {
|
||||
generateInstructions(selectorExpression)
|
||||
}
|
||||
else {
|
||||
val resultLabel = builder.createUnboundLabel("result of call")
|
||||
builder.jumpOnFalse(resultLabel, expression, null)
|
||||
generateInstructions(selectorExpression)
|
||||
builder.bindLabel(resultLabel)
|
||||
}
|
||||
copyValue(selectorExpression, expression)
|
||||
}
|
||||
else {
|
||||
|
||||
Reference in New Issue
Block a user