Control Flow: Fix CFG usage info for double-colon expressions

#KT-12551 Fixed
 #KT-17092 Fixed
This commit is contained in:
Alexey Sedunov
2017-07-06 16:15:21 +03:00
parent 216b28ec55
commit 2e76a76088
7 changed files with 35 additions and 9 deletions
@@ -1450,9 +1450,8 @@ class ControlFlowProcessor(private val trace: BindingTrace) {
val receiverExpression = expression.receiverExpression
if (receiverExpression != null &&
trace.bindingContext.get(BindingContext.DOUBLE_COLON_LHS, receiverExpression) is DoubleColonLHS.Expression) {
// TODO: UNUSED_EXPRESSION is not reported on the whole expression, see KT-12551
generateInstructions(receiverExpression)
createSyntheticValue(expression, MagicKind.BOUND_CALLABLE_REFERENCE, receiverExpression)
createNonSyntheticValue(expression, MagicKind.BOUND_CALLABLE_REFERENCE, receiverExpression)
}
else {
createNonSyntheticValue(expression, MagicKind.UNBOUND_CALLABLE_REFERENCE)
@@ -134,7 +134,7 @@ enum class MagicKind(val sideEffectFree: Boolean = false) {
IS(),
CAST(),
UNBOUND_CALLABLE_REFERENCE(true),
BOUND_CALLABLE_REFERENCE(),
BOUND_CALLABLE_REFERENCE(true),
// implicit operations
LOOP_RANGE_ITERATION(),
IMPLICIT_RECEIVER(),