aboutsummaryrefslogtreecommitdiff
path: root/unittests/AST/ASTTypeTraitsTest.cpp
diff options
context:
space:
mode:
authorPeter Collingbourne <peter@pcc.me.uk>2013-11-06 00:27:12 +0000
committerPeter Collingbourne <peter@pcc.me.uk>2013-11-06 00:27:12 +0000
commit00841f5d6273d9088cfe308bacf6f5a80470c829 (patch)
tree973c941b384a204383742b52cfcc563b726a5c50 /unittests/AST/ASTTypeTraitsTest.cpp
parent3f0e0402d8cd40b428f975f1a3607dbbd94d2ca6 (diff)
downloadclang-00841f5d6273d9088cfe308bacf6f5a80470c829.tar.gz
Introduce DynTypedNode::print, dump and getSourceRange.
These functions can generally be applied to multiple kinds of AST node, so it makes sense to add them to DynTypedNode. Differential Revision: http://llvm-reviews.chandlerc.com/D2096 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@194113 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests/AST/ASTTypeTraitsTest.cpp')
-rw-r--r--unittests/AST/ASTTypeTraitsTest.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/unittests/AST/ASTTypeTraitsTest.cpp b/unittests/AST/ASTTypeTraitsTest.cpp
index 5e3abe25d1..dd73b52206 100644
--- a/unittests/AST/ASTTypeTraitsTest.cpp
+++ b/unittests/AST/ASTTypeTraitsTest.cpp
@@ -10,6 +10,9 @@
#include "clang/AST/ASTTypeTraits.h"
#include "gtest/gtest.h"
+#include "MatchVerifier.h"
+
+using namespace clang::ast_matchers;
namespace clang {
namespace ast_type_traits {
@@ -58,5 +61,54 @@ TEST(ASTNodeKind, Name) {
EXPECT_EQ("<None>", ASTNodeKind().asStringRef());
}
+TEST(DynTypedNode, DeclSourceRange) {
+ RangeVerifier<DynTypedNode> Verifier;
+ Verifier.expectRange(1, 1, 1, 11);
+ EXPECT_TRUE(Verifier.match("void f() {}", decl()));
+}
+
+TEST(DynTypedNode, StmtSourceRange) {
+ RangeVerifier<DynTypedNode> Verifier;
+ Verifier.expectRange(1, 10, 1, 11);
+ EXPECT_TRUE(Verifier.match("void f() {}", stmt()));
+}
+
+TEST(DynTypedNode, TypeLocSourceRange) {
+ RangeVerifier<DynTypedNode> Verifier;
+ Verifier.expectRange(1, 1, 1, 8);
+ EXPECT_TRUE(Verifier.match("void f() {}", typeLoc(loc(functionType()))));
+}
+
+TEST(DynTypedNode, NNSLocSourceRange) {
+ RangeVerifier<DynTypedNode> Verifier;
+ Verifier.expectRange(1, 33, 1, 34);
+ EXPECT_TRUE(Verifier.match("namespace N { typedef void T; } N::T f() {}",
+ nestedNameSpecifierLoc()));
+}
+
+TEST(DynTypedNode, DeclDump) {
+ DumpVerifier Verifier;
+ Verifier.expectSubstring("FunctionDecl");
+ EXPECT_TRUE(Verifier.match("void f() {}", functionDecl()));
+}
+
+TEST(DynTypedNode, StmtDump) {
+ DumpVerifier Verifier;
+ Verifier.expectSubstring("CompoundStmt");
+ EXPECT_TRUE(Verifier.match("void f() {}", stmt()));
+}
+
+TEST(DynTypedNode, DeclPrint) {
+ PrintVerifier Verifier;
+ Verifier.expectString("void f() {\n}\n\n");
+ EXPECT_TRUE(Verifier.match("void f() {}", functionDecl()));
+}
+
+TEST(DynTypedNode, StmtPrint) {
+ PrintVerifier Verifier;
+ Verifier.expectString("{\n}\n");
+ EXPECT_TRUE(Verifier.match("void f() {}", stmt()));
+}
+
} // namespace ast_type_traits
} // namespace clang