diff options
author | Stephen Kelly <steveire@gmail.com> | 2018-10-29 18:59:56 +0000 |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2018-10-29 18:59:56 +0000 |
commit | a49fe5d878fc8b9246e8ab53862077c21c22cc8c (patch) | |
tree | d54213b232998c059f1063d71a674689ee6875e6 /clang-tools-extra/unittests/clang-query/QueryParserTest.cpp | |
parent | eb15d00193f75396c69cfa28b314fd5165d4c3fe (diff) | |
download | bcm5719-llvm-a49fe5d878fc8b9246e8ab53862077c21c22cc8c.tar.gz bcm5719-llvm-a49fe5d878fc8b9246e8ab53862077c21c22cc8c.zip |
[clang-query] Add non-exclusive output API
Summary:
Add granular options for AST dumping, text printing and diagnostics.
This makes it possible to
* Have both diag and dump active at once
* Extend the output with other queryable content in the future.
Reviewers: aaron.ballman, pcc, ioeric, ilya-biryukov, klimek, sammccall
Reviewed By: aaron.ballman
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D52857
llvm-svn: 345522
Diffstat (limited to 'clang-tools-extra/unittests/clang-query/QueryParserTest.cpp')
-rw-r--r-- | clang-tools-extra/unittests/clang-query/QueryParserTest.cpp | 39 |
1 files changed, 36 insertions, 3 deletions
diff --git a/clang-tools-extra/unittests/clang-query/QueryParserTest.cpp b/clang-tools-extra/unittests/clang-query/QueryParserTest.cpp index 0d1a8a1de19..d4c384c4d51 100644 --- a/clang-tools-extra/unittests/clang-query/QueryParserTest.cpp +++ b/clang-tools-extra/unittests/clang-query/QueryParserTest.cpp @@ -90,6 +90,18 @@ TEST_F(QueryParserTest, Set) { ASSERT_TRUE(isa<SetExclusiveOutputQuery>(Q)); EXPECT_EQ(&QuerySession::DetailedASTOutput, cast<SetExclusiveOutputQuery>(Q)->Var); + Q = parse("enable output detailed-ast"); + ASSERT_TRUE(isa<EnableOutputQuery>(Q)); + EXPECT_EQ(&QuerySession::DetailedASTOutput, cast<EnableOutputQuery>(Q)->Var); + + Q = parse("enable"); + ASSERT_TRUE(isa<InvalidQuery>(Q)); + EXPECT_EQ("expected variable name", cast<InvalidQuery>(Q)->ErrStr); + + Q = parse("disable output detailed-ast"); + ASSERT_TRUE(isa<DisableOutputQuery>(Q)); + EXPECT_EQ(&QuerySession::DetailedASTOutput, cast<DisableOutputQuery>(Q)->Var); + Q = parse("set bind-root foo"); ASSERT_TRUE(isa<InvalidQuery>(Q)); EXPECT_EQ("expected 'true' or 'false', got 'foo'", @@ -163,7 +175,7 @@ TEST_F(QueryParserTest, Comment) { TEST_F(QueryParserTest, Complete) { std::vector<llvm::LineEditor::Completion> Comps = QueryParser::complete("", 0, QS); - ASSERT_EQ(6u, Comps.size()); + ASSERT_EQ(8u, Comps.size()); EXPECT_EQ("help ", Comps[0].TypedText); EXPECT_EQ("help", Comps[0].DisplayText); EXPECT_EQ("let ", Comps[1].TypedText); @@ -174,14 +186,35 @@ TEST_F(QueryParserTest, Complete) { EXPECT_EQ("quit", Comps[3].DisplayText); EXPECT_EQ("set ", Comps[4].TypedText); EXPECT_EQ("set", Comps[4].DisplayText); - EXPECT_EQ("unlet ", Comps[5].TypedText); - EXPECT_EQ("unlet", Comps[5].DisplayText); + EXPECT_EQ("enable ", Comps[5].TypedText); + EXPECT_EQ("enable", Comps[5].DisplayText); + EXPECT_EQ("disable ", Comps[6].TypedText); + EXPECT_EQ("disable", Comps[6].DisplayText); + EXPECT_EQ("unlet ", Comps[7].TypedText); + EXPECT_EQ("unlet", Comps[7].DisplayText); Comps = QueryParser::complete("set o", 5, QS); ASSERT_EQ(1u, Comps.size()); EXPECT_EQ("utput ", Comps[0].TypedText); EXPECT_EQ("output", Comps[0].DisplayText); + Comps = QueryParser::complete("enable ", 7, QS); + ASSERT_EQ(1u, Comps.size()); + EXPECT_EQ("output ", Comps[0].TypedText); + EXPECT_EQ("output", Comps[0].DisplayText); + + Comps = QueryParser::complete("enable output ", 14, QS); + ASSERT_EQ(4u, Comps.size()); + + EXPECT_EQ("diag ", Comps[0].TypedText); + EXPECT_EQ("diag", Comps[0].DisplayText); + EXPECT_EQ("print ", Comps[1].TypedText); + EXPECT_EQ("print", Comps[1].DisplayText); + EXPECT_EQ("detailed-ast ", Comps[2].TypedText); + EXPECT_EQ("detailed-ast", Comps[2].DisplayText); + EXPECT_EQ("dump ", Comps[3].TypedText); + EXPECT_EQ("dump", Comps[3].DisplayText); + Comps = QueryParser::complete("match while", 11, QS); ASSERT_EQ(1u, Comps.size()); EXPECT_EQ("Stmt(", Comps[0].TypedText); |