diff options
Diffstat (limited to 'unittests/AST/CommentParser.cpp')
-rw-r--r-- | unittests/AST/CommentParser.cpp | 125 |
1 files changed, 72 insertions, 53 deletions
diff --git a/unittests/AST/CommentParser.cpp b/unittests/AST/CommentParser.cpp index 7258a7e..8fde247 100644 --- a/unittests/AST/CommentParser.cpp +++ b/unittests/AST/CommentParser.cpp @@ -10,6 +10,7 @@ #include "clang/Basic/SourceManager.h" #include "clang/Basic/FileManager.h" #include "clang/Basic/Diagnostic.h" +#include "clang/Basic/DiagnosticOptions.h" #include "clang/AST/Comment.h" #include "clang/AST/CommentLexer.h" #include "clang/AST/CommentParser.h" @@ -36,8 +37,9 @@ protected: CommentParserTest() : FileMgr(FileMgrOpts), DiagID(new DiagnosticIDs()), - Diags(DiagID, new IgnoringDiagConsumer()), - SourceMgr(Diags, FileMgr) { + Diags(DiagID, new DiagnosticOptions, new IgnoringDiagConsumer()), + SourceMgr(Diags, FileMgr), + Traits(Allocator) { } FileSystemOptions FileMgrOpts; @@ -46,6 +48,7 @@ protected: DiagnosticsEngine Diags; SourceManager SourceMgr; llvm::BumpPtrAllocator Allocator; + CommandTraits Traits; FullComment *parseString(const char *Source); }; @@ -55,17 +58,15 @@ FullComment *CommentParserTest::parseString(const char *Source) { FileID File = SourceMgr.createFileIDForMemBuffer(Buf); SourceLocation Begin = SourceMgr.getLocForStartOfFile(File); - comments::CommandTraits Traits; - comments::Lexer L(Allocator, Traits, Begin, CommentOptions(), - Source, Source + strlen(Source)); + Lexer L(Allocator, Traits, Begin, Source, Source + strlen(Source)); - comments::Sema S(Allocator, SourceMgr, Diags, Traits); - comments::Parser P(L, S, Allocator, SourceMgr, Diags, Traits); - comments::FullComment *FC = P.parseFullComment(); + Sema S(Allocator, SourceMgr, Diags, Traits, /*PP=*/ NULL); + Parser P(L, S, Allocator, SourceMgr, Diags, Traits); + FullComment *FC = P.parseFullComment(); if (DEBUG) { llvm::errs() << "=== Source:\n" << Source << "\n=== AST:\n"; - FC->dump(SourceMgr); + FC->dump(llvm::errs(), &Traits, &SourceMgr); } Token Tok; @@ -157,6 +158,7 @@ template <typename T> } ::testing::AssertionResult HasBlockCommandAt(const Comment *C, + const CommandTraits &Traits, size_t Idx, BlockCommandComment *&BCC, StringRef Name, @@ -165,7 +167,7 @@ template <typename T> if (!AR) return AR; - StringRef ActualName = BCC->getCommandName(); + StringRef ActualName = BCC->getCommandName(Traits); if (ActualName != Name) return ::testing::AssertionFailure() << "BlockCommandComment has name \"" << ActualName.str() << "\", " @@ -178,6 +180,7 @@ template <typename T> ::testing::AssertionResult HasParamCommandAt( const Comment *C, + const CommandTraits &Traits, size_t Idx, ParamCommandComment *&PCC, StringRef CommandName, @@ -189,7 +192,7 @@ template <typename T> if (!AR) return AR; - StringRef ActualCommandName = PCC->getCommandName(); + StringRef ActualCommandName = PCC->getCommandName(Traits); if (ActualCommandName != CommandName) return ::testing::AssertionFailure() << "ParamCommandComment has name \"" << ActualCommandName.str() << "\", " @@ -211,7 +214,7 @@ template <typename T> return ::testing::AssertionFailure() << "ParamCommandComment has no parameter name"; - StringRef ActualParamName = PCC->hasParamName() ? PCC->getParamName() : ""; + StringRef ActualParamName = PCC->hasParamName() ? PCC->getParamNameAsWritten() : ""; if (ActualParamName != ParamName) return ::testing::AssertionFailure() << "ParamCommandComment has parameter name \"" << ActualParamName.str() @@ -225,6 +228,7 @@ template <typename T> ::testing::AssertionResult HasTParamCommandAt( const Comment *C, + const CommandTraits &Traits, size_t Idx, TParamCommandComment *&TPCC, StringRef CommandName, @@ -234,7 +238,7 @@ template <typename T> if (!AR) return AR; - StringRef ActualCommandName = TPCC->getCommandName(); + StringRef ActualCommandName = TPCC->getCommandName(Traits); if (ActualCommandName != CommandName) return ::testing::AssertionFailure() << "TParamCommandComment has name \"" << ActualCommandName.str() << "\", " @@ -244,7 +248,7 @@ template <typename T> return ::testing::AssertionFailure() << "TParamCommandComment has no parameter name"; - StringRef ActualParamName = TPCC->hasParamName() ? TPCC->getParamName() : ""; + StringRef ActualParamName = TPCC->hasParamName() ? TPCC->getParamNameAsWritten() : ""; if (ActualParamName != ParamName) return ::testing::AssertionFailure() << "TParamCommandComment has parameter name \"" << ActualParamName.str() @@ -257,6 +261,7 @@ template <typename T> } ::testing::AssertionResult HasInlineCommandAt(const Comment *C, + const CommandTraits &Traits, size_t Idx, InlineCommandComment *&ICC, StringRef Name) { @@ -264,7 +269,7 @@ template <typename T> if (!AR) return AR; - StringRef ActualName = ICC->getCommandName(); + StringRef ActualName = ICC->getCommandName(Traits); if (ActualName != Name) return ::testing::AssertionFailure() << "InlineCommandComment has name \"" << ActualName.str() << "\", " @@ -276,11 +281,12 @@ template <typename T> struct NoArgs {}; ::testing::AssertionResult HasInlineCommandAt(const Comment *C, + const CommandTraits &Traits, size_t Idx, InlineCommandComment *&ICC, StringRef Name, NoArgs) { - ::testing::AssertionResult AR = HasInlineCommandAt(C, Idx, ICC, Name); + ::testing::AssertionResult AR = HasInlineCommandAt(C, Traits, Idx, ICC, Name); if (!AR) return AR; @@ -293,11 +299,12 @@ struct NoArgs {}; } ::testing::AssertionResult HasInlineCommandAt(const Comment *C, + const CommandTraits &Traits, size_t Idx, InlineCommandComment *&ICC, StringRef Name, StringRef Arg) { - ::testing::AssertionResult AR = HasInlineCommandAt(C, Idx, ICC, Name); + ::testing::AssertionResult AR = HasInlineCommandAt(C, Traits, Idx, ICC, Name); if (!AR) return AR; @@ -452,6 +459,7 @@ struct NoAttrs {}; } ::testing::AssertionResult HasVerbatimBlockAt(const Comment *C, + const CommandTraits &Traits, size_t Idx, VerbatimBlockComment *&VBC, StringRef Name, @@ -460,7 +468,7 @@ struct NoAttrs {}; if (!AR) return AR; - StringRef ActualName = VBC->getCommandName(); + StringRef ActualName = VBC->getCommandName(Traits); if (ActualName != Name) return ::testing::AssertionFailure() << "VerbatimBlockComment has name \"" << ActualName.str() << "\", " @@ -480,12 +488,13 @@ struct NoLines {}; struct Lines {}; ::testing::AssertionResult HasVerbatimBlockAt(const Comment *C, + const CommandTraits &Traits, size_t Idx, VerbatimBlockComment *&VBC, StringRef Name, StringRef CloseName, NoLines) { - ::testing::AssertionResult AR = HasVerbatimBlockAt(C, Idx, VBC, Name, + ::testing::AssertionResult AR = HasVerbatimBlockAt(C, Traits, Idx, VBC, Name, CloseName); if (!AR) return AR; @@ -499,13 +508,14 @@ struct Lines {}; } ::testing::AssertionResult HasVerbatimBlockAt(const Comment *C, + const CommandTraits &Traits, size_t Idx, VerbatimBlockComment *&VBC, StringRef Name, StringRef CloseName, Lines, StringRef Line0) { - ::testing::AssertionResult AR = HasVerbatimBlockAt(C, Idx, VBC, Name, + ::testing::AssertionResult AR = HasVerbatimBlockAt(C, Traits, Idx, VBC, Name, CloseName); if (!AR) return AR; @@ -525,6 +535,7 @@ struct Lines {}; } ::testing::AssertionResult HasVerbatimBlockAt(const Comment *C, + const CommandTraits &Traits, size_t Idx, VerbatimBlockComment *&VBC, StringRef Name, @@ -532,7 +543,7 @@ struct Lines {}; Lines, StringRef Line0, StringRef Line1) { - ::testing::AssertionResult AR = HasVerbatimBlockAt(C, Idx, VBC, Name, + ::testing::AssertionResult AR = HasVerbatimBlockAt(C, Traits, Idx, VBC, Name, CloseName); if (!AR) return AR; @@ -558,6 +569,7 @@ struct Lines {}; } ::testing::AssertionResult HasVerbatimLineAt(const Comment *C, + const CommandTraits &Traits, size_t Idx, VerbatimLineComment *&VLC, StringRef Name, @@ -566,7 +578,7 @@ struct Lines {}; if (!AR) return AR; - StringRef ActualName = VLC->getCommandName(); + StringRef ActualName = VLC->getCommandName(Traits); if (ActualName != Name) return ::testing::AssertionFailure() << "VerbatimLineComment has name \"" << ActualName.str() << "\", " @@ -651,7 +663,7 @@ TEST_F(CommentParserTest, Paragraph2) { { BlockCommandComment *BCC; ParagraphComment *PC; - ASSERT_TRUE(HasBlockCommandAt(FC, 1, BCC, "brief", PC)); + ASSERT_TRUE(HasBlockCommandAt(FC, Traits, 1, BCC, "brief", PC)); ASSERT_TRUE(HasParagraphCommentAt(BCC, 0, " Aaa")); } @@ -668,14 +680,14 @@ TEST_F(CommentParserTest, Paragraph3) { { BlockCommandComment *BCC; ParagraphComment *PC; - ASSERT_TRUE(HasBlockCommandAt(FC, 1, BCC, "brief", PC)); + ASSERT_TRUE(HasBlockCommandAt(FC, Traits, 1, BCC, "brief", PC)); ASSERT_TRUE(HasParagraphCommentAt(BCC, 0, " ")); } { BlockCommandComment *BCC; ParagraphComment *PC; - ASSERT_TRUE(HasBlockCommandAt(FC, 2, BCC, "author", PC)); + ASSERT_TRUE(HasBlockCommandAt(FC, Traits, 2, BCC, "author", PC)); ASSERT_TRUE(GetChildAt(BCC, 0, PC)); ASSERT_TRUE(HasChildCount(PC, 0)); @@ -695,7 +707,7 @@ TEST_F(CommentParserTest, Paragraph4) { { BlockCommandComment *BCC; ParagraphComment *PC; - ASSERT_TRUE(HasBlockCommandAt(FC, 1, BCC, "brief", PC)); + ASSERT_TRUE(HasBlockCommandAt(FC, Traits, 1, BCC, "brief", PC)); ASSERT_TRUE(GetChildAt(BCC, 0, PC)); ASSERT_TRUE(HasChildCount(PC, 2)); @@ -705,7 +717,7 @@ TEST_F(CommentParserTest, Paragraph4) { { BlockCommandComment *BCC; ParagraphComment *PC; - ASSERT_TRUE(HasBlockCommandAt(FC, 2, BCC, "author", PC)); + ASSERT_TRUE(HasBlockCommandAt(FC, Traits, 2, BCC, "author", PC)); ASSERT_TRUE(HasParagraphCommentAt(BCC, 0, " Ccc")); } @@ -721,7 +733,7 @@ TEST_F(CommentParserTest, ParamCommand1) { { ParamCommandComment *PCC; ParagraphComment *PC; - ASSERT_TRUE(HasParamCommandAt(FC, 1, PCC, "param", + ASSERT_TRUE(HasParamCommandAt(FC, Traits, 1, PCC, "param", ParamCommandComment::In, /* IsDirectionExplicit = */ false, "aaa", PC)); @@ -740,7 +752,7 @@ TEST_F(CommentParserTest, ParamCommand2) { { ParamCommandComment *PCC; ParagraphComment *PC; - ASSERT_TRUE(HasParamCommandAt(FC, 1, PCC, "param", + ASSERT_TRUE(HasParamCommandAt(FC, Traits, 1, PCC, "param", ParamCommandComment::In, /* IsDirectionExplicit = */ false, "", PC)); @@ -750,7 +762,7 @@ TEST_F(CommentParserTest, ParamCommand2) { { BlockCommandComment *BCC; ParagraphComment *PC; - ASSERT_TRUE(HasBlockCommandAt(FC, 2, BCC, "brief", PC)); + ASSERT_TRUE(HasBlockCommandAt(FC, Traits, 2, BCC, "brief", PC)); ASSERT_TRUE(HasChildCount(PC, 0)); } } @@ -774,7 +786,7 @@ TEST_F(CommentParserTest, ParamCommand3) { { ParamCommandComment *PCC; ParagraphComment *PC; - ASSERT_TRUE(HasParamCommandAt(FC, 1, PCC, "param", + ASSERT_TRUE(HasParamCommandAt(FC, Traits, 1, PCC, "param", ParamCommandComment::In, /* IsDirectionExplicit = */ false, "aaa", PC)); @@ -804,7 +816,7 @@ TEST_F(CommentParserTest, ParamCommand4) { { ParamCommandComment *PCC; ParagraphComment *PC; - ASSERT_TRUE(HasParamCommandAt(FC, 1, PCC, "param", + ASSERT_TRUE(HasParamCommandAt(FC, Traits, 1, PCC, "param", ParamCommandComment::In, /* IsDirectionExplicit = */ true, "aaa", PC)); @@ -834,7 +846,7 @@ TEST_F(CommentParserTest, ParamCommand5) { { ParamCommandComment *PCC; ParagraphComment *PC; - ASSERT_TRUE(HasParamCommandAt(FC, 1, PCC, "param", + ASSERT_TRUE(HasParamCommandAt(FC, Traits, 1, PCC, "param", ParamCommandComment::Out, /* IsDirectionExplicit = */ true, "aaa", PC)); @@ -865,7 +877,7 @@ TEST_F(CommentParserTest, ParamCommand6) { { ParamCommandComment *PCC; ParagraphComment *PC; - ASSERT_TRUE(HasParamCommandAt(FC, 1, PCC, "param", + ASSERT_TRUE(HasParamCommandAt(FC, Traits, 1, PCC, "param", ParamCommandComment::InOut, /* IsDirectionExplicit = */ true, "aaa", PC)); @@ -886,7 +898,7 @@ TEST_F(CommentParserTest, ParamCommand7) { { ParamCommandComment *PCC; ParagraphComment *PC; - ASSERT_TRUE(HasParamCommandAt(FC, 1, PCC, "param", + ASSERT_TRUE(HasParamCommandAt(FC, Traits, 1, PCC, "param", ParamCommandComment::In, /* IsDirectionExplicit = */ false, "aaa", PC)); @@ -920,7 +932,7 @@ TEST_F(CommentParserTest, TParamCommand1) { { TParamCommandComment *TPCC; ParagraphComment *PC; - ASSERT_TRUE(HasTParamCommandAt(FC, 1, TPCC, "tparam", + ASSERT_TRUE(HasTParamCommandAt(FC, Traits, 1, TPCC, "tparam", "aaa", PC)); ASSERT_TRUE(HasChildCount(TPCC, 1)); ASSERT_TRUE(HasParagraphCommentAt(TPCC, 0, " Bbb")); @@ -938,14 +950,14 @@ TEST_F(CommentParserTest, TParamCommand2) { { TParamCommandComment *TPCC; ParagraphComment *PC; - ASSERT_TRUE(HasTParamCommandAt(FC, 1, TPCC, "tparam", "", PC)); + ASSERT_TRUE(HasTParamCommandAt(FC, Traits, 1, TPCC, "tparam", "", PC)); ASSERT_TRUE(HasChildCount(TPCC, 1)); ASSERT_TRUE(HasChildCount(PC, 0)); } { BlockCommandComment *BCC; ParagraphComment *PC; - ASSERT_TRUE(HasBlockCommandAt(FC, 2, BCC, "brief", PC)); + ASSERT_TRUE(HasBlockCommandAt(FC, Traits, 2, BCC, "brief", PC)); ASSERT_TRUE(HasChildCount(PC, 0)); } } @@ -964,7 +976,7 @@ TEST_F(CommentParserTest, InlineCommand1) { ASSERT_TRUE(HasChildCount(PC, 2)); ASSERT_TRUE(HasTextAt(PC, 0, " ")); - ASSERT_TRUE(HasInlineCommandAt(PC, 1, ICC, "c", NoArgs())); + ASSERT_TRUE(HasInlineCommandAt(PC, Traits, 1, ICC, "c", NoArgs())); } } @@ -981,7 +993,7 @@ TEST_F(CommentParserTest, InlineCommand2) { ASSERT_TRUE(HasChildCount(PC, 3)); ASSERT_TRUE(HasTextAt(PC, 0, " ")); - ASSERT_TRUE(HasInlineCommandAt(PC, 1, ICC, "c", NoArgs())); + ASSERT_TRUE(HasInlineCommandAt(PC, Traits, 1, ICC, "c", NoArgs())); ASSERT_TRUE(HasTextAt(PC, 2, " ")); } } @@ -999,7 +1011,7 @@ TEST_F(CommentParserTest, InlineCommand3) { ASSERT_TRUE(HasChildCount(PC, 2)); ASSERT_TRUE(HasTextAt(PC, 0, " ")); - ASSERT_TRUE(HasInlineCommandAt(PC, 1, ICC, "c", "aaa")); + ASSERT_TRUE(HasInlineCommandAt(PC, Traits, 1, ICC, "c", "aaa")); } } @@ -1016,7 +1028,7 @@ TEST_F(CommentParserTest, InlineCommand4) { ASSERT_TRUE(HasChildCount(PC, 3)); ASSERT_TRUE(HasTextAt(PC, 0, " ")); - ASSERT_TRUE(HasInlineCommandAt(PC, 1, ICC, "c", "aaa")); + ASSERT_TRUE(HasInlineCommandAt(PC, Traits, 1, ICC, "c", "aaa")); ASSERT_TRUE(HasTextAt(PC, 2, " bbb")); } } @@ -1034,7 +1046,7 @@ TEST_F(CommentParserTest, InlineCommand5) { ASSERT_TRUE(HasChildCount(PC, 3)); ASSERT_TRUE(HasTextAt(PC, 0, " ")); - ASSERT_TRUE(HasInlineCommandAt(PC, 1, ICC, "unknown", NoArgs())); + ASSERT_TRUE(HasInlineCommandAt(PC, Traits, 1, ICC, "unknown", NoArgs())); ASSERT_TRUE(HasTextAt(PC, 2, " aaa")); } } @@ -1188,7 +1200,8 @@ TEST_F(CommentParserTest, VerbatimBlock1) { ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " ")); { VerbatimBlockComment *VCC; - ASSERT_TRUE(HasVerbatimBlockAt(FC, 1, VCC, "verbatim", "endverbatim", + ASSERT_TRUE(HasVerbatimBlockAt(FC, Traits, 1, VCC, + "verbatim", "endverbatim", NoLines())); } } @@ -1202,7 +1215,8 @@ TEST_F(CommentParserTest, VerbatimBlock2) { ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " ")); { VerbatimBlockComment *VBC; - ASSERT_TRUE(HasVerbatimBlockAt(FC, 1, VBC, "verbatim", "endverbatim", + ASSERT_TRUE(HasVerbatimBlockAt(FC, Traits, 1, VBC, + "verbatim", "endverbatim", Lines(), " Aaa ")); } } @@ -1216,7 +1230,7 @@ TEST_F(CommentParserTest, VerbatimBlock3) { ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " ")); { VerbatimBlockComment *VBC; - ASSERT_TRUE(HasVerbatimBlockAt(FC, 1, VBC, "verbatim", "", + ASSERT_TRUE(HasVerbatimBlockAt(FC, Traits, 1, VBC, "verbatim", "", Lines(), " Aaa")); } } @@ -1231,7 +1245,8 @@ TEST_F(CommentParserTest, VerbatimBlock4) { { VerbatimBlockComment *VBC; - ASSERT_TRUE(HasVerbatimBlockAt(FC, 0, VBC, "verbatim", "endverbatim", + ASSERT_TRUE(HasVerbatimBlockAt(FC, Traits, 0, VBC, + "verbatim", "endverbatim", NoLines())); } } @@ -1253,7 +1268,8 @@ TEST_F(CommentParserTest, VerbatimBlock5) { { VerbatimBlockComment *VBC; - ASSERT_TRUE(HasVerbatimBlockAt(FC, 0, VBC, "verbatim", "endverbatim", + ASSERT_TRUE(HasVerbatimBlockAt(FC, Traits, 0, VBC, + "verbatim", "endverbatim", Lines(), " Aaa")); } } @@ -1277,7 +1293,8 @@ TEST_F(CommentParserTest, VerbatimBlock6) { ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " ")); { VerbatimBlockComment *VBC; - ASSERT_TRUE(HasVerbatimBlockAt(FC, 1, VBC, "verbatim", "endverbatim", + ASSERT_TRUE(HasVerbatimBlockAt(FC, Traits, 1, VBC, + "verbatim", "endverbatim", Lines(), " Aaa")); } } @@ -1303,7 +1320,8 @@ TEST_F(CommentParserTest, VerbatimBlock7) { ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " ")); { VerbatimBlockComment *VBC; - ASSERT_TRUE(HasVerbatimBlockAt(FC, 1, VBC, "verbatim", "endverbatim", + ASSERT_TRUE(HasVerbatimBlockAt(FC, Traits, 1, VBC, + "verbatim", "endverbatim", Lines(), " Aaa", " Bbb")); } } @@ -1330,7 +1348,8 @@ TEST_F(CommentParserTest, VerbatimBlock8) { ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " ")); { VerbatimBlockComment *VBC; - ASSERT_TRUE(HasVerbatimBlockAt(FC, 1, VBC, "verbatim", "endverbatim")); + ASSERT_TRUE(HasVerbatimBlockAt(FC, Traits, 1, VBC, + "verbatim", "endverbatim")); ASSERT_EQ(3U, VBC->getNumLines()); ASSERT_EQ(" Aaa", VBC->getText(0)); ASSERT_EQ("", VBC->getText(1)); @@ -1352,7 +1371,7 @@ TEST_F(CommentParserTest, VerbatimLine1) { ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " ")); { VerbatimLineComment *VLC; - ASSERT_TRUE(HasVerbatimLineAt(FC, 1, VLC, "fn", "")); + ASSERT_TRUE(HasVerbatimLineAt(FC, Traits, 1, VLC, "fn", "")); } } } @@ -1370,7 +1389,7 @@ TEST_F(CommentParserTest, VerbatimLine2) { ASSERT_TRUE(HasParagraphCommentAt(FC, 0, " ")); { VerbatimLineComment *VLC; - ASSERT_TRUE(HasVerbatimLineAt(FC, 1, VLC, "fn", + ASSERT_TRUE(HasVerbatimLineAt(FC, Traits, 1, VLC, "fn", " void *foo(const char *zzz = \"\\$\");")); } } |