Control-Flow Analysis: Do not skip pseudocode for value arguments if they are matched with errors

This commit is contained in:
Alexey Sedunov
2016-11-02 15:33:41 +03:00
parent df38c70278
commit 0159ddbc49
6 changed files with 101 additions and 3 deletions
@@ -459,9 +459,7 @@ class ControlFlowProcessor(private val trace: BindingTrace) {
val rhsArgument = valueArguments.lastOrNull()
var argumentValues = SmartFMap.emptyMap<PseudoValue, ValueParameterDescriptor>()
for (valueArgument in valueArguments) {
val argumentMapping = setResolvedCall.getArgumentMapping(valueArgument)
if (argumentMapping.isError() || argumentMapping !is ArgumentMatch) continue
val argumentMapping = setResolvedCall.getArgumentMapping(valueArgument) as? ArgumentMatch ?: continue
val parameterDescriptor = argumentMapping.valueParameter
if (valueArgument !== rhsArgument) {
argumentValues = generateValueArgument(valueArgument, parameterDescriptor, argumentValues)