aboutsummaryrefslogtreecommitdiff
path: root/clang/unittests/AST/CommentParser.cpp
diff options
context:
space:
mode:
authorDmitri Gribenko <gribozavr@gmail.com>2012-07-24 18:23:31 +0000
committerDmitri Gribenko <gribozavr@gmail.com>2012-07-24 18:23:31 +0000
commit35b0c09b6cd99b5e673a454b424af5ca10f1c045 (patch)
tree43577c55996c0728ed9c805f1e07a9c337146a53 /clang/unittests/AST/CommentParser.cpp
parent84ce606b9108b83e8f44985481f5fa26cfd4fc18 (diff)
downloadllvm-35b0c09b6cd99b5e673a454b424af5ca10f1c045.zip
llvm-35b0c09b6cd99b5e673a454b424af5ca10f1c045.tar.gz
llvm-35b0c09b6cd99b5e673a454b424af5ca10f1c045.tar.bz2
Comment parsing: allow newlines between \param, direction specification (e.g.,
[in]), parameter name and description paragraph. llvm-svn: 160682
Diffstat (limited to 'clang/unittests/AST/CommentParser.cpp')
-rw-r--r--clang/unittests/AST/CommentParser.cpp126
1 files changed, 82 insertions, 44 deletions
diff --git a/clang/unittests/AST/CommentParser.cpp b/clang/unittests/AST/CommentParser.cpp
index ed7681d..47433ae 100644
--- a/clang/unittests/AST/CommentParser.cpp
+++ b/clang/unittests/AST/CommentParser.cpp
@@ -205,10 +205,15 @@ template <typename T>
<< " direction, "
"expected " << (IsDirectionExplicit ? "explicit" : "implicit");
+ if (!PCC->hasParamName())
+ return ::testing::AssertionFailure()
+ << "ParamCommandComment has no parameter name";
+
StringRef ActualParamName = PCC->getParamName();
if (ActualParamName != ParamName)
return ::testing::AssertionFailure()
- << "ParamCommandComment has name \"" << ActualParamName.str() << "\", "
+ << "ParamCommandComment has parameter name \"" << ActualParamName.str()
+ << "\", "
"expected \"" << ParamName.str() << "\"";
Paragraph = PCC->getParagraph();
@@ -672,69 +677,102 @@ TEST_F(CommentParserTest, Paragraph4) {
}
TEST_F(CommentParserTest, ParamCommand1) {
- const char *Source =
- "// \\param aaa Bbb\n";
+ const char *Sources[] = {
+ "// \\param aaa Bbb\n",
+ "// \\param\n"
+ "// aaa Bbb\n",
+ "// \\param \n"
+ "// aaa Bbb\n",
+ "// \\param aaa\n"
+ "// Bbb\n"
+ };
- FullComment *FC = parseString(Source);
- ASSERT_TRUE(HasChildCount(FC, 2));
+ for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
+ FullComment *FC = parseString(Sources[i]);
+ ASSERT_TRUE(HasChildCount(FC, 2));
- ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
- {
- ParamCommandComment *PCC;
- ParagraphComment *PC;
- ASSERT_TRUE(HasParamCommandAt(FC, 1, PCC, "param",
- ParamCommandComment::In,
- /* IsDirectionExplicit = */ false,
- "aaa", PC));
- ASSERT_TRUE(HasChildCount(PCC, 1));
- ASSERT_TRUE(HasParagraphCommentAt(PCC, 0, " Bbb"));
+ ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
+ {
+ ParamCommandComment *PCC;
+ ParagraphComment *PC;
+ ASSERT_TRUE(HasParamCommandAt(FC, 1, PCC, "param",
+ ParamCommandComment::In,
+ /* IsDirectionExplicit = */ false,
+ "aaa", PC));
+ ASSERT_TRUE(HasChildCount(PCC, 1));
+ ASSERT_TRUE(HasParagraphCommentAt(PCC, 0, " Bbb"));
+ }
}
}
TEST_F(CommentParserTest, ParamCommand2) {
- const char *Source =
- "// \\param [in] aaa Bbb\n";
+ const char *Sources[] = {
+ "// \\param [in] aaa Bbb\n",
+ "// \\param\n"
+ "// [in] aaa Bbb\n",
+ "// \\param [in]\n"
+ "// aaa Bbb\n",
+ "// \\param [in] aaa\n"
+ "// Bbb\n",
+ };
- FullComment *FC = parseString(Source);
- ASSERT_TRUE(HasChildCount(FC, 2));
+ for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
+ FullComment *FC = parseString(Sources[i]);
+ ASSERT_TRUE(HasChildCount(FC, 2));
- ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
- {
- ParamCommandComment *PCC;
- ParagraphComment *PC;
- ASSERT_TRUE(HasParamCommandAt(FC, 1, PCC, "param",
- ParamCommandComment::In,
- /* IsDirectionExplicit = */ true,
- "aaa", PC));
- ASSERT_TRUE(HasChildCount(PCC, 1));
- ASSERT_TRUE(HasParagraphCommentAt(PCC, 0, " Bbb"));
+ ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
+ {
+ ParamCommandComment *PCC;
+ ParagraphComment *PC;
+ ASSERT_TRUE(HasParamCommandAt(FC, 1, PCC, "param",
+ ParamCommandComment::In,
+ /* IsDirectionExplicit = */ true,
+ "aaa", PC));
+ ASSERT_TRUE(HasChildCount(PCC, 1));
+ ASSERT_TRUE(HasParagraphCommentAt(PCC, 0, " Bbb"));
+ }
}
}
TEST_F(CommentParserTest, ParamCommand3) {
- const char *Source =
- "// \\param [out] aaa Bbb\n";
+ const char *Sources[] = {
+ "// \\param [out] aaa Bbb\n",
+ "// \\param\n"
+ "// [out] aaa Bbb\n",
+ "// \\param [out]\n"
+ "// aaa Bbb\n",
+ "// \\param [out] aaa\n"
+ "// Bbb\n",
+ };
- FullComment *FC = parseString(Source);
- ASSERT_TRUE(HasChildCount(FC, 2));
+ for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {
+ FullComment *FC = parseString(Sources[i]);
+ ASSERT_TRUE(HasChildCount(FC, 2));
- ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
- {
- ParamCommandComment *PCC;
- ParagraphComment *PC;
- ASSERT_TRUE(HasParamCommandAt(FC, 1, PCC, "param",
- ParamCommandComment::Out,
- /* IsDirectionExplicit = */ true,
- "aaa", PC));
- ASSERT_TRUE(HasChildCount(PCC, 1));
- ASSERT_TRUE(HasParagraphCommentAt(PCC, 0, " Bbb"));
+ ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " "));
+ {
+ ParamCommandComment *PCC;
+ ParagraphComment *PC;
+ ASSERT_TRUE(HasParamCommandAt(FC, 1, PCC, "param",
+ ParamCommandComment::Out,
+ /* IsDirectionExplicit = */ true,
+ "aaa", PC));
+ ASSERT_TRUE(HasChildCount(PCC, 1));
+ ASSERT_TRUE(HasParagraphCommentAt(PCC, 0, " Bbb"));
+ }
}
}
TEST_F(CommentParserTest, ParamCommand4) {
const char *Sources[] = {
"// \\param [in,out] aaa Bbb\n",
- "// \\param [in, out] aaa Bbb\n"
+ "// \\param [in, out] aaa Bbb\n",
+ "// \\param [in,\n"
+ "// out] aaa Bbb\n",
+ "// \\param [in,out]\n"
+ "// aaa Bbb\n",
+ "// \\param [in,out] aaa\n"
+ "// Bbb\n"
};
for (size_t i = 0, e = array_lengthof(Sources); i != e; i++) {