Add an AST matcher, isFinal(), for testing whether a method or class declaration are marked final.
llvm-svn: 243107
diff --git a/clang/unittests/ASTMatchers/ASTMatchersTest.cpp b/clang/unittests/ASTMatchers/ASTMatchersTest.cpp
index 5ac28e5..edeebde 100644
--- a/clang/unittests/ASTMatchers/ASTMatchersTest.cpp
+++ b/clang/unittests/ASTMatchers/ASTMatchersTest.cpp
@@ -1784,6 +1784,15 @@
EXPECT_TRUE(notMatches("class C { int i; };", accessSpecDecl()));
}
+TEST(Matcher, MatchesFinal) {
+ EXPECT_TRUE(matches("class X final {};", recordDecl(isFinal())));
+ EXPECT_TRUE(matches("class X { virtual void f() final; };",
+ methodDecl(isFinal())));
+ EXPECT_TRUE(notMatches("class X {};", recordDecl(isFinal())));
+ EXPECT_TRUE(notMatches("class X { virtual void f(); };",
+ methodDecl(isFinal())));
+}
+
TEST(Matcher, MatchesVirtualMethod) {
EXPECT_TRUE(matches("class X { virtual int f(); };",
methodDecl(isVirtual(), hasName("::X::f"))));