blob: 461893188a1648565aefff0879ec925c66cca553 [file] [log] [blame]
Manuel Klimek874030e2012-11-07 00:33:12 +00001// RUN: %clang_cc1 -ast-dump -ast-dump-filter Test %s | FileCheck -strict-whitespace %s
2
3int TestLocation = 0;
Alexander Kornienko90ff6072012-12-20 02:09:13 +00004// CHECK: VarDecl{{.*}}TestLocation
5// CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} <col:20> 'int' 0
Manuel Klimek874030e2012-11-07 00:33:12 +00006
7int TestIndent = 1 + (1);
Alexander Kornienko90ff6072012-12-20 02:09:13 +00008// CHECK: VarDecl{{.*}}TestIndent
Richard Trieude5cc7d2013-01-31 01:44:26 +00009// CHECK-NEXT: {{^}}`-BinaryOperator{{[^()]*$}}
10// CHECK-NEXT: {{^}} |-IntegerLiteral{{.*0[^()]*$}}
11// CHECK-NEXT: {{^}} `-ParenExpr{{.*0[^()]*$}}
12// CHECK-NEXT: {{^}} `-IntegerLiteral{{.*0[^()]*$}}
Manuel Klimek874030e2012-11-07 00:33:12 +000013
14void TestDeclStmt() {
15 int x = 0;
16 int y, z;
17}
Alexander Kornienko90ff6072012-12-20 02:09:13 +000018// CHECK: FunctionDecl{{.*}}TestDeclStmt
Manuel Klimek874030e2012-11-07 00:33:12 +000019// CHECK-NEXT: CompoundStmt
20// CHECK-NEXT: DeclStmt
Alexander Kornienko90ff6072012-12-20 02:09:13 +000021// CHECK-NEXT: VarDecl{{.*}}x
Manuel Klimek874030e2012-11-07 00:33:12 +000022// CHECK-NEXT: IntegerLiteral
23// CHECK-NEXT: DeclStmt
Alexander Kornienko90ff6072012-12-20 02:09:13 +000024// CHECK-NEXT: VarDecl{{.*}}y
25// CHECK-NEXT: VarDecl{{.*}}z
Manuel Klimek874030e2012-11-07 00:33:12 +000026
27int TestOpaqueValueExpr = 0 ?: 1;
Alexander Kornienko90ff6072012-12-20 02:09:13 +000028// CHECK: VarDecl{{.*}}TestOpaqueValueExpr
Manuel Klimek874030e2012-11-07 00:33:12 +000029// CHECK-NEXT: BinaryConditionalOperator
30// CHECK-NEXT: IntegerLiteral
31// CHECK-NEXT: OpaqueValueExpr
32// CHECK-NEXT: IntegerLiteral
Aaron Ballmana5038552018-01-09 13:07:03 +000033// CHECK-NEXT: OpaqueValueExpr
34// CHECK-NEXT: IntegerLiteral
35// CHECK-NEXT: IntegerLiteral
36
37void TestUnaryOperatorExpr(void) {
38 char T1 = 1;
39 int T2 = 1;
40
41 T1++;
42 T2++;
43 // CHECK: UnaryOperator{{.*}}postfix '++' cannot overflow
44 // CHECK-NEXT: DeclRefExpr{{.*}}'T1' 'char'
45 // CHECK-NOT: UnaryOperator{{.*}}postfix '++' cannot overflow
46 // CHECK: DeclRefExpr{{.*}}'T2' 'int'
47
48 -T1;
49 -T2;
50 // CHECK: UnaryOperator{{.*}}prefix '-' cannot overflow
51 // CHECK-NEXT: ImplicitCastExpr
52 // CHECK-NEXT: ImplicitCastExpr
53 // CHECK-NEXT: DeclRefExpr{{.*}}'T1' 'char'
54 // CHECK-NOT: UnaryOperator{{.*}}prefix '-' cannot overflow
55 // CHECK: ImplicitCastExpr
56 // CHECK: DeclRefExpr{{.*}}'T2' 'int'
57
58 ~T1;
59 ~T2;
60 // CHECK: UnaryOperator{{.*}}prefix '~' cannot overflow
61 // CHECK-NEXT: ImplicitCastExpr
62 // CHECK-NEXT: ImplicitCastExpr
63 // CHECK-NEXT: DeclRefExpr{{.*}}'T1' 'char'
64 // CHECK: UnaryOperator{{.*}}prefix '~' cannot overflow
65 // CHECK-NEXT: ImplicitCastExpr
66 // CHECK-NEXT: DeclRefExpr{{.*}}'T2' 'int'
67}