]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/Misc/ast-dump-stmt.c
Vendor import of clang trunk r338536:
[FreeBSD/FreeBSD.git] / test / Misc / ast-dump-stmt.c
1 // RUN: %clang_cc1 -ast-dump -ast-dump-filter Test %s | FileCheck -strict-whitespace %s
2
3 int TestLocation = 0;
4 // CHECK:      VarDecl{{.*}}TestLocation
5 // CHECK-NEXT:   IntegerLiteral 0x{{[^ ]*}} <col:20> 'int' 0
6
7 int TestIndent = 1 + (1);
8 // CHECK:      VarDecl{{.*}}TestIndent
9 // CHECK-NEXT: {{^}}`-BinaryOperator{{[^()]*$}}
10 // CHECK-NEXT: {{^}}  |-IntegerLiteral{{.*0[^()]*$}}
11 // CHECK-NEXT: {{^}}  `-ParenExpr{{.*0[^()]*$}}
12 // CHECK-NEXT: {{^}}    `-IntegerLiteral{{.*0[^()]*$}}
13
14 void TestDeclStmt() {
15   int x = 0;
16   int y, z;
17 }
18 // CHECK:      FunctionDecl{{.*}}TestDeclStmt
19 // CHECK-NEXT: CompoundStmt
20 // CHECK-NEXT:   DeclStmt
21 // CHECK-NEXT:     VarDecl{{.*}}x
22 // CHECK-NEXT:       IntegerLiteral
23 // CHECK-NEXT:   DeclStmt
24 // CHECK-NEXT:     VarDecl{{.*}}y
25 // CHECK-NEXT:     VarDecl{{.*}}z
26
27 int TestOpaqueValueExpr = 0 ?: 1;
28 // CHECK:      VarDecl{{.*}}TestOpaqueValueExpr
29 // CHECK-NEXT: BinaryConditionalOperator
30 // CHECK-NEXT:   IntegerLiteral
31 // CHECK-NEXT:   OpaqueValueExpr
32 // CHECK-NEXT:     IntegerLiteral
33 // CHECK-NEXT:   OpaqueValueExpr\r
34 // CHECK-NEXT:     IntegerLiteral\r
35 // CHECK-NEXT:   IntegerLiteral\r
36 \r
37 void TestUnaryOperatorExpr(void) {\r
38   char T1 = 1;\r
39   int T2 = 1;\r
40 \r
41   T1++;\r
42   T2++;\r
43   // CHECK:      UnaryOperator{{.*}}postfix '++' cannot overflow\r
44   // CHECK-NEXT:   DeclRefExpr{{.*}}'T1' 'char'\r
45   // CHECK-NOT:  UnaryOperator{{.*}}postfix '++' cannot overflow\r
46   // CHECK:        DeclRefExpr{{.*}}'T2' 'int'\r
47 \r
48   -T1;\r
49   -T2;\r
50   // CHECK:      UnaryOperator{{.*}}prefix '-' cannot overflow\r
51   // CHECK-NEXT:   ImplicitCastExpr\r
52   // CHECK-NEXT:     ImplicitCastExpr\r
53   // CHECK-NEXT:       DeclRefExpr{{.*}}'T1' 'char'\r
54   // CHECK-NOT:  UnaryOperator{{.*}}prefix '-' cannot overflow\r
55   // CHECK:        ImplicitCastExpr\r
56   // CHECK:          DeclRefExpr{{.*}}'T2' 'int'\r
57 \r
58   ~T1;\r
59   ~T2;\r
60   // CHECK:      UnaryOperator{{.*}}prefix '~' cannot overflow\r
61   // CHECK-NEXT:   ImplicitCastExpr\r
62   // CHECK-NEXT:     ImplicitCastExpr\r
63   // CHECK-NEXT:       DeclRefExpr{{.*}}'T1' 'char'\r
64   // CHECK:      UnaryOperator{{.*}}prefix '~' cannot overflow\r
65   // CHECK-NEXT:     ImplicitCastExpr\r
66   // CHECK-NEXT:       DeclRefExpr{{.*}}'T2' 'int'\r
67 }\r