// RUN: %clang_cc1 -ast-dump -ast-dump-filter Test %s | FileCheck -strict-whitespace %s int TestLocation = 0; // CHECK: VarDecl{{.*}}TestLocation // CHECK-NEXT: IntegerLiteral 0x{{[^ ]*}} 'int' 0 int TestIndent = 1 + (1); // CHECK: VarDecl{{.*}}TestIndent // CHECK-NEXT: {{^}}`-BinaryOperator{{[^()]*$}} // CHECK-NEXT: {{^}} |-IntegerLiteral{{.*0[^()]*$}} // CHECK-NEXT: {{^}} `-ParenExpr{{.*0[^()]*$}} // CHECK-NEXT: {{^}} `-IntegerLiteral{{.*0[^()]*$}} void TestDeclStmt() { int x = 0; int y, z; } // CHECK: FunctionDecl{{.*}}TestDeclStmt // CHECK-NEXT: CompoundStmt // CHECK-NEXT: DeclStmt // CHECK-NEXT: VarDecl{{.*}}x // CHECK-NEXT: IntegerLiteral // CHECK-NEXT: DeclStmt // CHECK-NEXT: VarDecl{{.*}}y // CHECK-NEXT: VarDecl{{.*}}z int TestOpaqueValueExpr = 0 ?: 1; // CHECK: VarDecl{{.*}}TestOpaqueValueExpr // CHECK-NEXT: BinaryConditionalOperator // CHECK-NEXT: IntegerLiteral // CHECK-NEXT: OpaqueValueExpr // CHECK-NEXT: IntegerLiteral // CHECK-NEXT: OpaqueValueExpr // CHECK-NEXT: IntegerLiteral // CHECK-NEXT: IntegerLiteral void TestUnaryOperatorExpr(void) { char T1 = 1; int T2 = 1; T1++; T2++; // CHECK: UnaryOperator{{.*}}postfix '++' cannot overflow // CHECK-NEXT: DeclRefExpr{{.*}}'T1' 'char' // CHECK-NOT: UnaryOperator{{.*}}postfix '++' cannot overflow // CHECK: DeclRefExpr{{.*}}'T2' 'int' -T1; -T2; // CHECK: UnaryOperator{{.*}}prefix '-' cannot overflow // CHECK-NEXT: ImplicitCastExpr // CHECK-NEXT: ImplicitCastExpr // CHECK-NEXT: DeclRefExpr{{.*}}'T1' 'char' // CHECK-NOT: UnaryOperator{{.*}}prefix '-' cannot overflow // CHECK: ImplicitCastExpr // CHECK: DeclRefExpr{{.*}}'T2' 'int' ~T1; ~T2; // CHECK: UnaryOperator{{.*}}prefix '~' cannot overflow // CHECK-NEXT: ImplicitCastExpr // CHECK-NEXT: ImplicitCastExpr // CHECK-NEXT: DeclRefExpr{{.*}}'T1' 'char' // CHECK: UnaryOperator{{.*}}prefix '~' cannot overflow // CHECK-NEXT: ImplicitCastExpr // CHECK-NEXT: DeclRefExpr{{.*}}'T2' 'int' }