| // RUN: %clang_cc1 -verify -ast-print %s -xc -DDEF_BOOL_CBOOL \ |
| // RUN: | FileCheck %s --check-prefixes=BOOL-AS-CBOOL,CBOOL |
| // |
| // RUN: %clang_cc1 -verify -ast-print %s -xc -DDEF_BOOL_CBOOL -DDIAG \ |
| // RUN: | FileCheck %s --check-prefixes=BOOL-AS-CBOOL,CBOOL |
| // |
| // RUN: %clang_cc1 -verify -ast-print %s -xc -DDEF_BOOL_INT \ |
| // RUN: | FileCheck %s --check-prefixes=BOOL-AS-INT,CBOOL |
| // |
| // RUN: %clang_cc1 -verify -ast-print %s -xc -DDEF_BOOL_INT -DDIAG \ |
| // RUN: | FileCheck %s --check-prefixes=BOOL-AS-INT,CBOOL |
| // |
| // RUN: %clang_cc1 -verify -ast-print %s -xc++ \ |
| // RUN: | FileCheck %s --check-prefixes=BOOL-AS-BOOL |
| // |
| // RUN: %clang_cc1 -verify -ast-print %s -xc++ -DDIAG \ |
| // RUN: | FileCheck %s --check-prefixes=BOOL-AS-BOOL |
| |
| #if DEF_BOOL_CBOOL |
| # define bool _Bool |
| #elif DEF_BOOL_INT |
| # define bool int |
| #endif |
| |
| // BOOL-AS-CBOOL: _Bool i; |
| // BOOL-AS-INT: int i; |
| // BOOL-AS-BOOL: bool i; |
| bool i; |
| |
| #ifndef __cplusplus |
| // CBOOL: _Bool j; |
| _Bool j; |
| #endif |
| |
| // Induce a diagnostic (and verify we actually managed to do so), which used to |
| // permanently alter the -ast-print printing policy for _Bool. How bool is |
| // defined by the preprocessor is examined only once per compilation, when the |
| // diagnostic is emitted, and it used to affect the entirety of -ast-print, so |
| // test only one definition of bool per compilation. |
| #if DIAG |
| void fn() { 1; } // expected-warning {{expression result unused}} |
| #else |
| // expected-no-diagnostics |
| #endif |