예제 #1
0
TEST(InitListExpr, VectorLiteralListBraceRange) {
  RangeVerifier<InitListExpr> Verifier;
  Verifier.expectRange(2, 17, 2, 22);
  EXPECT_TRUE(Verifier.match(
                  "typedef int int2 __attribute__((ext_vector_type(2)));\n"
                  "int2 i2 = (int2){1, 2};", initListExpr()));
}
예제 #2
0
TEST(InitListExpr, VectorLiteralInitListParens) {
  RangeVerifier<InitListExpr> Verifier;
  Verifier.expectRange(2, 26, 2, 31);
  EXPECT_TRUE(Verifier.match(
                  "typedef int int2 __attribute__((ext_vector_type(2)));\n"
                  "constant int2 i2 = (int2)(1, 2);", initListExpr(), Lang_OpenCL));
}
예제 #3
0
TEST(MemberExpr, ImplicitMemberRange) {
  RangeVerifier<MemberExpr> Verifier;
  Verifier.expectRange(2, 30, 2, 30);
  EXPECT_TRUE(Verifier.match("struct S { operator int() const; };\n"
                             "int foo(const S& s) { return s; }",
                             memberExpr()));
}
예제 #4
0
TEST(CompoundLiteralExpr, CompoundVectorLiteralRange) {
  RangeVerifier<CompoundLiteralExpr> Verifier;
  Verifier.expectRange(2, 11, 2, 22);
  EXPECT_TRUE(Verifier.match(
                  "typedef int int2 __attribute__((ext_vector_type(2)));\n"
                  "int2 i2 = (int2){1, 2};", compoundLiteralExpr()));
}
예제 #5
0
TEST(FriendDecl, FriendNonMemberFunctionDefinitionRange) {
  RangeVerifier<FriendDecl> Verifier;
  Verifier.expectRange(2, 1, 2, 28);
  EXPECT_TRUE(Verifier.match("struct A {\n"
                             "friend int f() { return 0; }\n"
                             "};\n",
                             friendDecl()));
}
예제 #6
0
TEST(FriendDecl, FriendNonMemberFunctionRange) {
  RangeVerifier<FriendDecl> Verifier;
  Verifier.expectRange(2, 1, 2, 15);
  EXPECT_TRUE(Verifier.match("struct A {\n"
                             "friend void f();\n"
                             "};\n",
                             friendDecl()));
}
예제 #7
0
TEST(UsingDecl, SourceRange) {
  RangeVerifier<UsingDecl> Verifier;
  Verifier.expectRange(2, 22, 2, 25);
  EXPECT_TRUE(Verifier.match(
      "class B { protected: int i; };\n"
      "class D : public B { B::i; };",
      usingDecl()));
}
예제 #8
0
TEST(CXXTemporaryObjectExpr, SourceRange) {
  RangeVerifier<CXXTemporaryObjectExpr> Verifier;
  Verifier.expectRange(2, 6, 2, 12);
  EXPECT_TRUE(Verifier.match(
      "struct A { A(int, int); };\n"
      "A a( A{0, 0} );",
      temporaryObjectExpr(), Lang_CXX11));
}
예제 #9
0
TEST(FriendDecl, FriendElaboratedTypeRange) {
  RangeVerifier<FriendDecl> Verifier;
  Verifier.expectRange(2, 1, 2, 14);
  EXPECT_TRUE(Verifier.match("struct A {\n"
                             "friend class B;\n"
                             "};\n",
                             friendDecl()));
}
예제 #10
0
TEST(FriendDecl, FriendInlineFunctionRange) {
  RangeVerifier<FriendDecl> Verifier;
  Verifier.expectRange(2, 1, 2, 35);
  EXPECT_TRUE(Verifier.match("struct A {\n"
                             "int inline friend f() { return 0; }"
                             "};\n",
                             friendDecl(), Lang_CXX11));
}
예제 #11
0
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")))))));
}
예제 #12
0
TEST(CompoundLiteralExpr, ParensCompoundVectorLiteralRange) {
  RangeVerifier<CompoundLiteralExpr> Verifier;
  Verifier.expectRange(2, 20, 2, 31);
  EXPECT_TRUE(Verifier.match(
                  "typedef int int2 __attribute__((ext_vector_type(2)));\n"
                  "constant int2 i2 = (int2)(1, 2);", 
                  compoundLiteralExpr(), Lang_OpenCL));
}
예제 #13
0
TEST(CXXConstructExpr, SourceRange) {
  RangeVerifier<CXXConstructExpr> Verifier;
  Verifier.expectRange(3, 14, 3, 19);
  EXPECT_TRUE(Verifier.match(
      "struct A { A(int, int); };\n"
      "void f(A a);\n"
      "void g() { f({0, 0}); }",
      constructExpr(), Lang_CXX11));
}
예제 #14
0
TEST(FriendDecl, FriendTemplateClassRange) {
  RangeVerifier<FriendDecl> Verifier;
  Verifier.expectRange(2, 1, 3, 14);
  EXPECT_TRUE(Verifier.match("struct A {\n"
                             "template <typename T>\n"
                             "friend class B;\n"
                             "};\n",
                             friendDecl()));
}
예제 #15
0
TEST(FriendDecl, FriendTemplateFunctionRange) {
  RangeVerifier<FriendDecl> Verifier;
  Verifier.expectRange(2, 1, 3, 15);
  EXPECT_TRUE(Verifier.match("struct A {\n"
                             "template <typename T>\n"
                             "friend void f();\n"
                             "};\n",
                             friendDecl()));
}
예제 #16
0
TEST(FriendDecl, FriendTemplateParameterRange) {
  RangeVerifier<FriendDecl> Verifier;
  Verifier.expectRange(3, 1, 3, 8);
  EXPECT_TRUE(Verifier.match("template <typename T>\n"
                             "struct A {\n"
                             "friend T;\n"
                             "};\n",
                             friendDecl(), Lang_CXX11));
}
예제 #17
0
TEST(FriendDecl, FriendSimpleTypeRange) {
  RangeVerifier<FriendDecl> Verifier;
  Verifier.expectRange(3, 1, 3, 8);
  EXPECT_TRUE(Verifier.match("class B;\n"
                             "struct A {\n"
                             "friend B;\n"
                             "};\n",
                             friendDecl(), Lang_CXX11));
}
예제 #18
0
TEST(CXXFunctionalCastExpr, SourceRange) {
  RangeVerifier<CXXFunctionalCastExpr> Verifier;
  Verifier.expectRange(2, 10, 2, 14);
  EXPECT_TRUE(Verifier.match(
      "int foo() {\n"
      "  return int{};\n"
      "}",
      functionalCastExpr(), Lang_CXX11));
}
예제 #19
0
TEST(UnresolvedUsingValueDecl, SourceRange) {
  RangeVerifier<UnresolvedUsingValueDecl> Verifier;
  Verifier.expectRange(3, 3, 3, 6);
  EXPECT_TRUE(Verifier.match(
      "template <typename B>\n"
      "class D : public B {\n"
      "  B::i;\n"
      "};",
      unresolvedUsingValueDecl()));
}
예제 #20
0
TEST(FriendDecl, FriendDecltypeRange) {
  RangeVerifier<FriendDecl> Verifier;
  Verifier.expectRange(4, 1, 4, 8);
  EXPECT_TRUE(Verifier.match("struct A;\n"
                             "A foo();\n"
                             "struct A {\n"
                             "friend decltype(foo());\n"
                             "};\n",
                             friendDecl(), Lang_CXX11));
}
예제 #21
0
TEST(ObjCMessageExpr, CXXConstructExprRange) {
  RangeVerifier<CXXConstructExpr> Verifier;
  Verifier.expectRange(5, 25, 5, 27);
  EXPECT_TRUE(Verifier.match(
      "struct A { int a; };\n"
      "@interface B {}\n"
      "+ (void) f1: (A)arg;\n"
      "@end\n"
      "void f2() { A a; [B f1: (a)]; }\n",
      constructExpr(), Lang_OBJCXX));
}
예제 #22
0
TEST(CXXUnresolvedConstructExpr, SourceRange) {
  RangeVerifier<CXXUnresolvedConstructExpr> Verifier;
  Verifier.expectRange(3, 10, 3, 12);
  std::vector<std::string> Args;
  Args.push_back("-fno-delayed-template-parsing");
  EXPECT_TRUE(Verifier.match(
      "template <typename U>\n"
      "U foo() {\n"
      "  return U{};\n"
      "}",
      unresolvedConstructExpr(), Args, Lang_CXX11));
}
예제 #23
0
TEST(FriendDecl, InstantiationSourceRange) {
  RangeVerifier<FriendDecl> Verifier;
  Verifier.expectRange(4, 3, 4, 35);
  EXPECT_TRUE(Verifier.match(
      "template <typename T> class S;\n"
      "template<class T> void operator+(S<T> x);\n"
      "template<class T> struct S {\n"
      "  friend void operator+<>(S<T> src);\n"
      "};\n"
      "void test(S<double> s) { +s; }",
      friendDecl(hasParent(recordDecl(isTemplateInstantiation())))));
}
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()));
}
예제 #28
0
TEST(CXXNewExpr, ParenRange) {
  RangeVerifier<CXXNewExpr> Verifier;
  Verifier.expectRange(1, 12, 1, 20);
  EXPECT_TRUE(Verifier.match("void f() { new int(); }", newExpr()));
}
예제 #29
0
TEST(CXXNewExpr, ArrayRange) {
  RangeVerifier<CXXNewExpr> Verifier;
  Verifier.expectRange(1, 12, 1, 22);
  EXPECT_TRUE(Verifier.match("void f() { new int[10]; }", newExpr()));
}
예제 #30
0
TEST(ParmVarDecl, KNRRange) {
  RangeVerifier<ParmVarDecl> Verifier;
  Verifier.expectRange(1, 8, 1, 8);
  EXPECT_TRUE(Verifier.match("void f(i) {}", varDecl(), Lang_C));
}