diff options
| author | Peter Wu <peter@lekensteyn.nl> | 2017-06-08 22:00:38 +0000 |
|---|---|---|
| committer | Peter Wu <peter@lekensteyn.nl> | 2017-06-08 22:00:38 +0000 |
| commit | c04b198c50b0ed845c102e59b8eb1a6136b2347c (patch) | |
| tree | ec1643c4f413c84af7e052b0f74d2fe6458db0af /clang/unittests | |
| parent | 8dde4cba4ce76a9efc663e997735e96325be7902 (diff) | |
| download | bcm5719-llvm-c04b198c50b0ed845c102e59b8eb1a6136b2347c.tar.gz bcm5719-llvm-c04b198c50b0ed845c102e59b8eb1a6136b2347c.zip | |
[ASTMatchers] Add support for boolean literals
Summary:
Recognize boolean literals for future extensions ("equals(true)").
Note that a specific VariantValue constructor is added to resolve
ambiguity (like "Value = 5") between unsigned and bool.
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D33093
llvm-svn: 305020
Diffstat (limited to 'clang/unittests')
| -rw-r--r-- | clang/unittests/ASTMatchers/Dynamic/ParserTest.cpp | 9 | ||||
| -rw-r--r-- | clang/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp | 12 |
2 files changed, 21 insertions, 0 deletions
diff --git a/clang/unittests/ASTMatchers/Dynamic/ParserTest.cpp b/clang/unittests/ASTMatchers/Dynamic/ParserTest.cpp index d241f5ba2f8..504724362a7 100644 --- a/clang/unittests/ASTMatchers/Dynamic/ParserTest.cpp +++ b/clang/unittests/ASTMatchers/Dynamic/ParserTest.cpp @@ -75,6 +75,15 @@ public: ExpectedMatchersTy ExpectedMatchers; }; +TEST(ParserTest, ParseBoolean) { + MockSema Sema; + Sema.parse("true"); + Sema.parse("false"); + EXPECT_EQ(2U, Sema.Values.size()); + EXPECT_EQ(true, Sema.Values[0].getBoolean()); + EXPECT_EQ(false, Sema.Values[1].getBoolean()); +} + TEST(ParserTest, ParseUnsigned) { MockSema Sema; Sema.parse("0"); diff --git a/clang/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp b/clang/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp index 9df7b780d47..ca0eb902858 100644 --- a/clang/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp +++ b/clang/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp @@ -75,12 +75,14 @@ TEST(VariantValueTest, Assignment) { EXPECT_TRUE(Value.isString()); EXPECT_EQ("A", Value.getString()); EXPECT_TRUE(Value.hasValue()); + EXPECT_FALSE(Value.isBoolean()); EXPECT_FALSE(Value.isUnsigned()); EXPECT_FALSE(Value.isMatcher()); EXPECT_EQ("String", Value.getTypeAsString()); Value = VariantMatcher::SingleMatcher(recordDecl()); EXPECT_TRUE(Value.hasValue()); + EXPECT_FALSE(Value.isBoolean()); EXPECT_FALSE(Value.isUnsigned()); EXPECT_FALSE(Value.isString()); EXPECT_TRUE(Value.isMatcher()); @@ -88,15 +90,25 @@ TEST(VariantValueTest, Assignment) { EXPECT_FALSE(Value.getMatcher().hasTypedMatcher<UnaryOperator>()); EXPECT_EQ("Matcher<Decl>", Value.getTypeAsString()); + Value = true; + EXPECT_TRUE(Value.isBoolean()); + EXPECT_EQ(true, Value.getBoolean()); + EXPECT_TRUE(Value.hasValue()); + EXPECT_FALSE(Value.isUnsigned()); + EXPECT_FALSE(Value.isMatcher()); + EXPECT_FALSE(Value.isString()); + Value = 17; EXPECT_TRUE(Value.isUnsigned()); EXPECT_EQ(17U, Value.getUnsigned()); + EXPECT_FALSE(Value.isBoolean()); EXPECT_TRUE(Value.hasValue()); EXPECT_FALSE(Value.isMatcher()); EXPECT_FALSE(Value.isString()); Value = VariantValue(); EXPECT_FALSE(Value.hasValue()); + EXPECT_FALSE(Value.isBoolean()); EXPECT_FALSE(Value.isUnsigned()); EXPECT_FALSE(Value.isString()); EXPECT_FALSE(Value.isMatcher()); |

