Author: steveire Date: Wed Oct 3 01:21:54 2018 New Revision: 343666 URL: http://llvm.org/viewvc/llvm-project?rev=343666&view=rev Log: [clang-query] Add comment token handling
Summary: It is possible to pass a file of commands to clang-query using the command line option -f or --preload. Make it possible to write comments in such files. Reviewers: aaron.ballman Reviewed By: aaron.ballman Subscribers: mgorny, cfe-commits Differential Revision: https://reviews.llvm.org/D52752 Modified: clang-tools-extra/trunk/clang-query/QueryParser.cpp clang-tools-extra/trunk/unittests/clang-query/QueryParserTest.cpp Modified: clang-tools-extra/trunk/clang-query/QueryParser.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-query/QueryParser.cpp?rev=343666&r1=343665&r2=343666&view=diff ============================================================================== --- clang-tools-extra/trunk/clang-query/QueryParser.cpp (original) +++ clang-tools-extra/trunk/clang-query/QueryParser.cpp Wed Oct 3 01:21:54 2018 @@ -37,6 +37,11 @@ StringRef QueryParser::lexWord() { ++Begin; } + if (*Begin == '#') { + End = Begin; + return StringRef(); + } + const char *WordBegin = Begin; while (true) { @@ -127,6 +132,7 @@ namespace { enum ParsedQueryKind { PQK_Invalid, + PQK_Comment, PQK_NoOp, PQK_Help, PQK_Let, @@ -161,6 +167,7 @@ QueryRef QueryParser::doParse() { StringRef CommandStr; ParsedQueryKind QKind = LexOrCompleteWord<ParsedQueryKind>(this, CommandStr) .Case("", PQK_NoOp) + .Case("#", PQK_Comment, /*IsCompletion=*/false) .Case("help", PQK_Help) .Case("l", PQK_Let, /*IsCompletion=*/false) .Case("let", PQK_Let) @@ -173,6 +180,7 @@ QueryRef QueryParser::doParse() { .Default(PQK_Invalid); switch (QKind) { + case PQK_Comment: case PQK_NoOp: return new NoOpQuery; Modified: clang-tools-extra/trunk/unittests/clang-query/QueryParserTest.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/clang-query/QueryParserTest.cpp?rev=343666&r1=343665&r2=343666&view=diff ============================================================================== --- clang-tools-extra/trunk/unittests/clang-query/QueryParserTest.cpp (original) +++ clang-tools-extra/trunk/unittests/clang-query/QueryParserTest.cpp Wed Oct 3 01:21:54 2018 @@ -146,6 +146,17 @@ TEST_F(QueryParserTest, LetUnlet) { cast<InvalidQuery>(Q)->ErrStr); } +TEST_F(QueryParserTest, Comment) { + QueryRef Q = parse("# let foo decl()"); + ASSERT_TRUE(isa<NoOpQuery>(Q)); + + Q = parse("let foo decl() # creates a decl() matcher called foo"); + ASSERT_TRUE(isa<LetQuery>(Q)); + + Q = parse("set bind-root false # reduce noise"); + ASSERT_TRUE(isa<SetQuery<bool>>(Q)); +} + TEST_F(QueryParserTest, Complete) { std::vector<llvm::LineEditor::Completion> Comps = QueryParser::complete("", 0, QS); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits