Add an assert to ParamCommandComment::getParamIndex() -- it should not be

called unless index is valid.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160970 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dmitri Gribenko 2012-07-30 17:38:19 +00:00
Родитель cec9ce49dc
Коммит b740316a12
2 изменённых файлов: 12 добавлений и 4 удалений

Просмотреть файл

@ -713,6 +713,7 @@ public:
}
unsigned getParamIndex() const LLVM_READONLY {
assert(isParamIndexValid());
return ParamIndex;
}

Просмотреть файл

@ -256,7 +256,7 @@ unsigned clang_ParamCommandComment_isParamIndexValid(CXComment CXC) {
unsigned clang_ParamCommandComment_getParamIndex(CXComment CXC) {
const ParamCommandComment *PCC = getASTNodeAs<ParamCommandComment>(CXC);
if (!PCC)
if (!PCC || !PCC->isParamIndexValid())
return ParamCommandComment::InvalidParamIndex;
return PCC->getParamIndex();
@ -316,11 +316,18 @@ namespace {
class ParamCommandCommentCompareIndex {
public:
/// This comparison will sort parameters with valid index by index and
/// invalid (unresolved) parameters last.
bool operator()(const ParamCommandComment *LHS,
const ParamCommandComment *RHS) const {
// To sort invalid (unresolved) parameters last, this comparison relies on
// invalid indices to be UINT_MAX.
return LHS->getParamIndex() < RHS->getParamIndex();
unsigned LHSIndex = UINT_MAX;
unsigned RHSIndex = UINT_MAX;
if (LHS->isParamIndexValid())
LHSIndex = LHS->getParamIndex();
if (RHS->isParamIndexValid())
RHSIndex = RHS->getParamIndex();
return LHSIndex < RHSIndex;
}
};