[Sema][SE-0060] Don't allow out of order argument

This commit is contained in:
Rintaro Ishizaki
2016-06-28 14:33:12 +09:00
parent b6285bb391
commit 01ce9d5a36
4 changed files with 34 additions and 25 deletions

View File

@@ -540,19 +540,9 @@ matchCallArguments(ArrayRef<CallArgParam> args,
continue;
}
// The argument binds to a parameter that comes earlier than the
// previous argument. This is fine so long as this parameter and all of
// those parameters up to (and including) the previously-bound parameter
// are either variadic or have a default argument.
for (unsigned i = paramIdx; i != prevParamIdx + 1; ++i) {
const auto &param = params[i];
if (param.Variadic || param.HasDefaultArgument)
continue;
unsigned prevArgIdx = parameterBindings[prevParamIdx].front();
listener.outOfOrderArgument(argIdx, prevArgIdx);
return true;
}
unsigned prevArgIdx = parameterBindings[prevParamIdx].front();
listener.outOfOrderArgument(argIdx, prevArgIdx);
return true;
}
}