diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2012-10-18 21:42:42 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2012-10-18 21:42:42 +0000 |
commit | 262e60c1ccb5197e8e2ea49ada1196ed65183734 (patch) | |
tree | cec7b85be8e507525f07c9beeeaad66824c70b2d | |
parent | d2deb91b02ae1d810719e4a5a63dc404f362575a (diff) |
[doc parsing] use getParamName to access parameter
for current(rewritten) comment and getParamNameAsWritten
to access param name coming with \param marker.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166231 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/AST/Comment.h | 8 | ||||
-rw-r--r-- | lib/AST/Comment.cpp | 24 | ||||
-rw-r--r-- | lib/AST/CommentDumper.cpp | 13 | ||||
-rw-r--r-- | lib/AST/CommentSema.cpp | 4 | ||||
-rw-r--r-- | tools/libclang/CXComment.cpp | 25 | ||||
-rw-r--r-- | unittests/AST/CommentParser.cpp | 4 |
6 files changed, 48 insertions, 30 deletions
diff --git a/include/clang/AST/Comment.h b/include/clang/AST/Comment.h index 600046b899..33a24df43d 100644 --- a/include/clang/AST/Comment.h +++ b/include/clang/AST/Comment.h @@ -707,6 +707,10 @@ public: } StringRef getParamName(comments::FullComment *FC) const; + + StringRef getParamNameAsWritten() const { + return Args[0].Text; + } SourceRange getParamNameRange() const { return Args[0].Range; @@ -760,6 +764,10 @@ public: } StringRef getParamName(comments::FullComment *FC) const; + + StringRef getParamNameAsWritten() const { + return Args[0].Text; + } SourceRange getParamNameRange() const { return Args[0].Range; diff --git a/lib/AST/Comment.cpp b/lib/AST/Comment.cpp index 03b58a7aa3..edb0f60fdf 100644 --- a/lib/AST/Comment.cpp +++ b/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/lib/AST/CommentDumper.cpp b/lib/AST/CommentDumper.cpp index 4f51cd5622..18ba47ff6c 100644 --- a/lib/AST/CommentDumper.cpp +++ b/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/lib/AST/CommentSema.cpp b/lib/AST/CommentSema.cpp index d664bdb632..08ecb3a994 100644 --- a/lib/AST/CommentSema.cpp +++ b/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; diff --git a/tools/libclang/CXComment.cpp b/tools/libclang/CXComment.cpp index 90a67ca69c..6f3f382444 100644 --- a/tools/libclang/CXComment.cpp +++ b/tools/libclang/CXComment.cpp @@ -255,7 +255,7 @@ CXString clang_ParamCommandComment_getParamName(CXComment CXC) { if (!PCC || !PCC->hasParamName()) return createCXString((const char *) 0); - return createCXString(PCC->getParamName(0), /*DupString=*/ false); + return createCXString(PCC->getParamNameAsWritten(), /*DupString=*/ false); } unsigned clang_ParamCommandComment_isParamIndexValid(CXComment CXC) { @@ -306,7 +306,7 @@ CXString clang_TParamCommandComment_getParamName(CXComment CXC) { if (!TPCC || !TPCC->hasParamName()) return createCXString((const char *) 0); - return createCXString(TPCC->getParamName(0), /*DupString=*/ false); + return createCXString(TPCC->getParamNameAsWritten(), /*DupString=*/ false); } unsigned clang_TParamCommandComment_isParamPositionValid(CXComment CXC) { @@ -669,10 +669,11 @@ void CommentASTToHTMLConverter::visitParamCommandComment( Result << "<dt class=\"param-name-index-" << C->getParamIndex() << "\">"; - } else + appendToResultWithHTMLEscaping(C->getParamName(FC)); + } else { Result << "<dt class=\"param-name-index-invalid\">"; - - appendToResultWithHTMLEscaping(C->getParamName(FC)); + appendToResultWithHTMLEscaping(C->getParamNameAsWritten()); + } Result << "</dt>"; if (C->isParamIndexValid()) { @@ -695,10 +696,12 @@ void CommentASTToHTMLConverter::visitTParamCommandComment( << "\">"; else Result << "<dt class=\"tparam-name-index-other\">"; - } else + appendToResultWithHTMLEscaping(C->getParamName(FC)); + } else { Result << "<dt class=\"tparam-name-index-invalid\">"; - - appendToResultWithHTMLEscaping(C->getParamName(FC)); + appendToResultWithHTMLEscaping(C->getParamNameAsWritten()); + } + Result << "</dt>"; if (C->isPositionValid()) { @@ -961,7 +964,8 @@ void CommentASTToXMLConverter::visitBlockCommandComment(const BlockCommandCommen void CommentASTToXMLConverter::visitParamCommandComment(const ParamCommandComment *C) { Result << "<Parameter><Name>"; - appendToResultWithXMLEscaping(C->getParamName(FC)); + appendToResultWithXMLEscaping(C->isParamIndexValid() ? C->getParamName(FC) + : C->getParamNameAsWritten()); Result << "</Name>"; if (C->isParamIndexValid()) @@ -987,7 +991,8 @@ void CommentASTToXMLConverter::visitParamCommandComment(const ParamCommandCommen void CommentASTToXMLConverter::visitTParamCommandComment( const TParamCommandComment *C) { Result << "<Parameter><Name>"; - appendToResultWithXMLEscaping(C->getParamName(FC)); + appendToResultWithXMLEscaping(C->isPositionValid() ? C->getParamName(FC) + : C->getParamNameAsWritten()); Result << "</Name>"; if (C->isPositionValid() && C->getDepth() == 1) { diff --git a/unittests/AST/CommentParser.cpp b/unittests/AST/CommentParser.cpp index 01ece2e41f..e4226e7d3d 100644 --- a/unittests/AST/CommentParser.cpp +++ b/unittests/AST/CommentParser.cpp @@ -213,7 +213,7 @@ template <typename T> return ::testing::AssertionFailure() << "ParamCommandComment has no parameter name"; - StringRef ActualParamName = PCC->hasParamName() ? PCC->getParamName(0) : ""; + StringRef ActualParamName = PCC->hasParamName() ? PCC->getParamNameAsWritten() : ""; if (ActualParamName != ParamName) return ::testing::AssertionFailure() << "ParamCommandComment has parameter name \"" << ActualParamName.str() @@ -247,7 +247,7 @@ template <typename T> return ::testing::AssertionFailure() << "TParamCommandComment has no parameter name"; - StringRef ActualParamName = TPCC->hasParamName() ? TPCC->getParamName(0) : ""; + StringRef ActualParamName = TPCC->hasParamName() ? TPCC->getParamNameAsWritten() : ""; if (ActualParamName != ParamName) return ::testing::AssertionFailure() << "TParamCommandComment has parameter name \"" << ActualParamName.str() |