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 | 8f0f1b0c41cd7667aa92a7f1307d9f00047394ba (patch) | |
tree | 11de1b8f5de6603cee8a70b44e41bb85efee881b /clang/lib/AST/CommentSema.cpp | |
parent | a44e193a11a5e8aa6fcbe6b4b65638ff2d0b0e26 (diff) | |
download | bcm5719-llvm-8f0f1b0c41cd7667aa92a7f1307d9f00047394ba.tar.gz bcm5719-llvm-8f0f1b0c41cd7667aa92a7f1307d9f00047394ba.zip |
Comment diagnostics: add warning for multiple \param commands with duplicate
parameter names.
llvm-svn: 160696
Diffstat (limited to 'clang/lib/AST/CommentSema.cpp')
-rw-r--r-- | clang/lib/AST/CommentSema.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/clang/lib/AST/CommentSema.cpp b/clang/lib/AST/CommentSema.cpp index 8fa8ab7d06f..5301bfebe96 100644 --- a/clang/lib/AST/CommentSema.cpp +++ b/clang/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; } |