• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // RUN: clang-diff -dump-matches %S/Inputs/clang-diff-basic-src.cpp %s -- | FileCheck %s
2 
3 // CHECK: Match TranslationUnitDecl{{.*}} to TranslationUnitDecl
4 // CHECK: Match NamespaceDecl: src{{.*}} to NamespaceDecl: dst
5 namespace dst {
6 // CHECK-NOT: Match NamespaceDecl: src{{.*}} to NamespaceDecl: inner
7 namespace inner {
foo()8 void foo() {
9   // CHECK: Match IntegerLiteral: 321{{.*}} to IntegerLiteral: 322
10   int x = 322;
11 }
12 }
13 
14 // CHECK: Match DeclRefExpr: :foo{{.*}} to DeclRefExpr: :inner::foo
main()15 void main() { inner::foo(); }
16 
17 // CHECK: Match StringLiteral: foo{{.*}} to StringLiteral: foo
18 const char *b = "f" "o" "o";
19 
20 // unsigned is canonicalized to unsigned int
21 // CHECK: Match TypedefDecl: :nat;unsigned int;{{.*}} to TypedefDecl: :nat;unsigned int;
22 typedef unsigned nat;
23 
24 // CHECK: Match VarDecl: :p(int){{.*}} to VarDecl: :prod(double)
25 // CHECK: Update VarDecl: :p(int){{.*}} to :prod(double)
26 // CHECK: Match BinaryOperator: *{{.*}} to BinaryOperator: *
27 double prod = 1 * 2 * 10;
28 // CHECK: Update DeclRefExpr
29 int squared = prod * prod;
30 
31 class X {
foo(int i)32   const char *foo(int i) {
33     if (i == 0)
34       return "Bar";
35     // CHECK: Insert IfStmt{{.*}} into IfStmt
36     // CHECK: Insert BinaryOperator: =={{.*}} into IfStmt
37     else if (i == -1)
38       return "foo";
39     return 0;
40   }
X()41   X(){}
42 };
43 }
44 
45 // CHECK: Move CompoundStmt{{.*}} into CompoundStmt
m()46 void m() { { int x = 0 + 0 + 0; } }
47 // CHECK: Update and Move IntegerLiteral: 7{{.*}} into BinaryOperator: +({{.*}}) at 1
48 int um = 1 + 7;
49 
50 namespace {
51 // match with parents of different type
52 // CHECK: Match FunctionDecl: f1{{.*}} to FunctionDecl: (anonymous namespace)::f1
f1()53 void f1() {{ (void) __func__;;; }}
54 }
55 
56 // CHECK: Delete AccessSpecDecl: public
57 // CHECK: Delete CXXMethodDecl
58