diff options
author | Dmitri Gribenko <gribozavr@gmail.com> | 2012-07-24 21:44:16 +0000 |
---|---|---|
committer | Dmitri Gribenko <gribozavr@gmail.com> | 2012-07-24 21:44:16 +0000 |
commit | 6582277bfc8bb587602e2c0689b6b2ff4b9bef53 (patch) | |
tree | bae823995050b02329a1542197d002c3b57c48bf /lib/AST/CommentSema.cpp | |
parent | 56df4a9e0461d4dfb2a740cb6b0ce531d6c82538 (diff) |
Comment diagnostics: add warning for multiple \param commands with duplicate
parameter names.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160696 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/CommentSema.cpp')
-rw-r--r-- | lib/AST/CommentSema.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/AST/CommentSema.cpp b/lib/AST/CommentSema.cpp index 8fa8ab7d06..5301bfebe9 100644 --- a/lib/AST/CommentSema.cpp +++ b/lib/AST/CommentSema.cpp @@ -153,6 +153,15 @@ ParamCommandComment *Sema::actOnParamCommandParamNameArg( const unsigned ResolvedParamIndex = resolveParmVarReference(Arg, ParamVars); if (ResolvedParamIndex != ParamCommandComment::InvalidParamIndex) { Command->setParamIndex(ResolvedParamIndex); + if (ParamVarDocs[ResolvedParamIndex]) { + SourceRange ArgRange(ArgLocBegin, ArgLocEnd); + Diag(ArgLocBegin, diag::warn_doc_param_duplicate) + << Arg << ArgRange; + ParamCommandComment *PrevCommand = ParamVarDocs[ResolvedParamIndex]; + Diag(PrevCommand->getLocation(), diag::note_doc_param_previous) + << PrevCommand->getParamNameRange(); + } + ParamVarDocs[ResolvedParamIndex] = Command; return Command; } @@ -351,7 +360,6 @@ HTMLEndTagComment *Sema::actOnHTMLEndTag(SourceLocation LocBegin, FullComment *Sema::actOnFullComment( ArrayRef<BlockContentComment *> Blocks) { - SmallVector<ParamCommandComment *, 8> Params; return new (Allocator) FullComment(Blocks); } @@ -382,6 +390,7 @@ ArrayRef<const ParmVarDecl *> Sema::getParamVars() { } void Sema::inspectThisDecl() { + assert(!IsThisDeclInspected); if (!ThisDecl) { IsFunctionDecl = false; ParamVars = ArrayRef<const ParmVarDecl *>(); @@ -397,6 +406,7 @@ void Sema::inspectThisDecl() { IsFunctionDecl = false; ParamVars = ArrayRef<const ParmVarDecl *>(); } + ParamVarDocs.resize(ParamVars.size(), NULL); IsThisDeclInspected = true; } |