diff options
author | Manuel Klimek <klimek@google.com> | 2012-04-23 16:40:40 +0000 |
---|---|---|
committer | Manuel Klimek <klimek@google.com> | 2012-04-23 16:40:40 +0000 |
commit | 969186fa4b2f52b5fb67a4a73cfc828899a4874a (patch) | |
tree | 4d97ea57d296e3db24358df01f251460998585f5 /clang/unittests/Tooling/RecursiveASTVisitorTest.cpp | |
parent | 3099f4bda82ab231422c5dbbb815816b58724998 (diff) | |
download | bcm5719-llvm-969186fa4b2f52b5fb67a4a73cfc828899a4874a.tar.gz bcm5719-llvm-969186fa4b2f52b5fb67a4a73cfc828899a4874a.zip |
Fix PR12608. Patch contributed by Yang Chen.
llvm-svn: 155355
Diffstat (limited to 'clang/unittests/Tooling/RecursiveASTVisitorTest.cpp')
-rw-r--r-- | clang/unittests/Tooling/RecursiveASTVisitorTest.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/clang/unittests/Tooling/RecursiveASTVisitorTest.cpp b/clang/unittests/Tooling/RecursiveASTVisitorTest.cpp index d7dad2738a0..8ddae504a0a 100644 --- a/clang/unittests/Tooling/RecursiveASTVisitorTest.cpp +++ b/clang/unittests/Tooling/RecursiveASTVisitorTest.cpp @@ -106,6 +106,7 @@ protected: FullLocation.isValid() && FullLocation.getSpellingLineNumber() == ExpectedLine && FullLocation.getSpellingColumnNumber() == ExpectedColumn) { + EXPECT_TRUE(!Found); Found = true; } else if (Name == ExpectedMatch || (FullLocation.isValid() && @@ -157,6 +158,31 @@ TEST(RecursiveASTVisitor, VisitsBaseClassDeclarations) { EXPECT_TRUE(Visitor.runOver("class X {}; class Y : public X {};")); } +TEST(RecursiveASTVisitor, VisitsCXXBaseSpecifiersOfForwardDeclaredClass) { + TypeLocVisitor Visitor; + Visitor.ExpectMatch("class X", 3, 18); + EXPECT_TRUE(Visitor.runOver( + "class Y;\n" + "class X {};\n" + "class Y : public X {};")); +} + +TEST(RecursiveASTVisitor, VisitsCXXBaseSpecifiersWithIncompleteInnerClass) { + TypeLocVisitor Visitor; + Visitor.ExpectMatch("class X", 2, 18); + EXPECT_TRUE(Visitor.runOver( + "class X {};\n" + "class Y : public X { class Z; };")); +} + +TEST(RecursiveASTVisitor, VisitsCXXBaseSpecifiersOfSelfReferentialType) { + TypeLocVisitor Visitor; + Visitor.ExpectMatch("X<class Y>", 2, 18); + EXPECT_TRUE(Visitor.runOver( + "template<typename T> class X {};\n" + "class Y : public X<Y> {};")); +} + TEST(RecursiveASTVisitor, VisitsBaseClassTemplateArguments) { DeclRefExprVisitor Visitor; Visitor.ExpectMatch("x", 2, 3); |