diff options
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/AST/Comment.cpp | 24 | ||||
-rw-r--r-- | clang/lib/AST/CommentDumper.cpp | 13 | ||||
-rw-r--r-- | clang/lib/AST/CommentSema.cpp | 4 |
3 files changed, 23 insertions, 18 deletions
diff --git a/clang/lib/AST/Comment.cpp b/clang/lib/AST/Comment.cpp index 03b58a7aa3c..edb0f60fdfe 100644 --- a/clang/lib/AST/Comment.cpp +++ b/clang/lib/AST/Comment.cpp @@ -306,24 +306,22 @@ void DeclInfo::fill() { } StringRef ParamCommandComment::getParamName(comments::FullComment *FC) const { - if (FC && isParamIndexValid()) - return FC->getThisDeclInfo()->ParamVars[getParamIndex()]->getName(); - return Args[0].Text; + assert(isParamIndexValid()); + return FC->getThisDeclInfo()->ParamVars[getParamIndex()]->getName(); } StringRef TParamCommandComment::getParamName(comments::FullComment *FC) const { - if (FC && isPositionValid()) { - const TemplateParameterList *TPL = FC->getThisDeclInfo()->TemplateParameters; - for (unsigned i = 0, e = getDepth(); i != e; ++i) { - if (i == e-1) - return TPL->getParam(getIndex(i))->getName(); - const NamedDecl *Param = TPL->getParam(getIndex(i)); - if (const TemplateTemplateParmDecl *TTP = + assert(isPositionValid()); + const TemplateParameterList *TPL = FC->getThisDeclInfo()->TemplateParameters; + for (unsigned i = 0, e = getDepth(); i != e; ++i) { + if (i == e-1) + return TPL->getParam(getIndex(i))->getName(); + const NamedDecl *Param = TPL->getParam(getIndex(i)); + if (const TemplateTemplateParmDecl *TTP = dyn_cast<TemplateTemplateParmDecl>(Param)) - TPL = TTP->getTemplateParameters(); - } + TPL = TTP->getTemplateParameters(); } - return Args[0].Text; + return ""; } } // end namespace comments diff --git a/clang/lib/AST/CommentDumper.cpp b/clang/lib/AST/CommentDumper.cpp index 4f51cd5622c..18ba47ff6c7 100644 --- a/clang/lib/AST/CommentDumper.cpp +++ b/clang/lib/AST/CommentDumper.cpp @@ -186,8 +186,12 @@ void CommentDumper::visitParamCommandComment(const ParamCommandComment *C) { else OS << " implicitly"; - if (C->hasParamName()) - OS << " Param=\"" << C->getParamName(const_cast<FullComment*>(FC)) << "\""; + if (C->hasParamName()) { + if (C->isParamIndexValid()) + OS << " Param=\"" << C->getParamName(const_cast<FullComment*>(FC)) << "\""; + else + OS << " Param=\"" << C->getParamNameAsWritten() << "\""; + } if (C->isParamIndexValid()) OS << " ParamIndex=" << C->getParamIndex(); @@ -197,7 +201,10 @@ void CommentDumper::visitTParamCommandComment(const TParamCommandComment *C) { dumpComment(C); if (C->hasParamName()) { - OS << " Param=\"" << C->getParamName(const_cast<FullComment*>(FC)) << "\""; + if (C->isPositionValid()) + OS << " Param=\"" << C->getParamName(const_cast<FullComment*>(FC)) << "\""; + else + OS << " Param=\"" << C->getParamNameAsWritten() << "\""; } if (C->isPositionValid()) { diff --git a/clang/lib/AST/CommentSema.cpp b/clang/lib/AST/CommentSema.cpp index d664bdb6329..08ecb3a994d 100644 --- a/clang/lib/AST/CommentSema.cpp +++ b/clang/lib/AST/CommentSema.cpp @@ -574,7 +574,7 @@ void Sema::resolveParamCommandIndexes(const FullComment *FC) { ParamCommandComment *PCC = dyn_cast<ParamCommandComment>(*I); if (!PCC || !PCC->hasParamName()) continue; - StringRef ParamName = PCC->getParamName(0); + StringRef ParamName = PCC->getParamNameAsWritten(); // Check that referenced parameter name is in the function decl. const unsigned ResolvedParamIndex = resolveParmVarReference(ParamName, @@ -609,7 +609,7 @@ void Sema::resolveParamCommandIndexes(const FullComment *FC) { const ParamCommandComment *PCC = UnresolvedParamCommands[i]; SourceRange ArgRange = PCC->getParamNameRange(); - StringRef ParamName = PCC->getParamName(0); + StringRef ParamName = PCC->getParamNameAsWritten(); Diag(ArgRange.getBegin(), diag::warn_doc_param_not_found) << ParamName << ArgRange; |