TEST(FriendDecl, FriendConstructorDestructorRange) { const std::string Code = "struct B {\n" "B();\n" "~B();\n" "};\n" "struct A {\n" "friend B::B(), B::~B();\n" "};\n"; RangeVerifier<FriendDecl> ConstructorVerifier; ConstructorVerifier.expectRange(6, 1, 6, 13); EXPECT_TRUE(ConstructorVerifier.match( Code, friendDecl(has(constructorDecl(ofClass(hasName("B"))))))); RangeVerifier<FriendDecl> DestructorVerifier; DestructorVerifier.expectRange(6, 1, 6, 22); EXPECT_TRUE(DestructorVerifier.match( Code, friendDecl(has(destructorDecl(ofClass(hasName("B"))))))); }
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, TypeLocSourceRange) { RangeVerifier<DynTypedNode> Verifier; Verifier.expectRange(1, 1, 1, 8); EXPECT_TRUE(Verifier.match("void f() {}", typeLoc(loc(functionType())))); }
TEST(DynTypedNode, StmtSourceRange) { RangeVerifier<DynTypedNode> Verifier; Verifier.expectRange(1, 10, 1, 11); EXPECT_TRUE(Verifier.match("void f() {}", stmt())); }
TEST(DynTypedNode, DeclSourceRange) { RangeVerifier<DynTypedNode> Verifier; Verifier.expectRange(1, 1, 1, 11); EXPECT_TRUE(Verifier.match("void f() {}", decl())); }
TEST(CXXNewExpr, ParenRange) { RangeVerifier<CXXNewExpr> Verifier; Verifier.expectRange(1, 12, 1, 20); EXPECT_TRUE(Verifier.match("void f() { new int(); }", newExpr())); }
TEST(CXXNewExpr, ArrayRange) { RangeVerifier<CXXNewExpr> Verifier; Verifier.expectRange(1, 12, 1, 22); EXPECT_TRUE(Verifier.match("void f() { new int[10]; }", newExpr())); }
TEST(ParmVarDecl, KNRRange) { RangeVerifier<ParmVarDecl> Verifier; Verifier.expectRange(1, 8, 1, 8); EXPECT_TRUE(Verifier.match("void f(i) {}", varDecl(), Lang_C)); }
TEST(LabelStmt, Range) { RangeVerifier<LabelStmt> Verifier; Verifier.expectRange(1, 12, 1, 15); EXPECT_TRUE(Verifier.match("void f() { l: return; }", labelStmt())); }
TEST(RangeVerifier, WrongRange) { RangeVerifier<VarDecl> Verifier; Verifier.expectRange(1, 1, 1, 1); EXPECT_FALSE(Verifier.match("int i;", varDecl())); }
TEST(CXXConstructorDecl, NoRetFunTypeLocRange) { RangeVerifier<CXXConstructorDecl> Verifier; Verifier.expectRange(1, 11, 1, 13); EXPECT_TRUE(Verifier.match("class C { C(); };", functionDecl())); }
TEST(VarDecl, VMTypeFixedVarDeclRange) { RangeVerifier<VarDecl> Verifier; Verifier.expectRange(1, 1, 1, 23); EXPECT_TRUE(Verifier.match("int a[(int)(void*)1234];", varDecl(), Lang_C89)); }
TEST(CXXNewExpr, TypeParenRange) { RangeVerifier<CXXNewExpr> Verifier; Verifier.expectRange(1, 10, 1, 18); EXPECT_TRUE(Verifier.match("int* a = new (int);", newExpr())); }