xref: /aosp_15_r20/external/clang/test/Misc/reduced-diags-macros.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: not %clang_cc1 -fsyntax-only %s 2>&1 | FileCheck %s -strict-whitespace
2*67e74705SXin Li 
3*67e74705SXin Li #define NO_INITIATION(x) int a = x * 2
4*67e74705SXin Li #define NO_DEFINITION(x) int c = x * 2
5*67e74705SXin Li 
6*67e74705SXin Li NO_INITIATION(a);
7*67e74705SXin Li NO_DEFINITION(b);
8*67e74705SXin Li 
9*67e74705SXin Li // CHECK: {{.*}}:6:15: warning: variable 'a' is uninitialized when used within its own initialization
10*67e74705SXin Li // CHECK-NEXT: NO_INITIATION(a);
11*67e74705SXin Li // CHECK-NEXT: ~~~~~~~~~~~~~~^~
12*67e74705SXin Li // CHECK-NEXT: {{.*}}:3:34: note: expanded from macro 'NO_INITIATION'
13*67e74705SXin Li // CHECK-NEXT: #define NO_INITIATION(x) int a = x * 2
14*67e74705SXin Li // CHECK-NEXT:                              ~   ^
15*67e74705SXin Li 
16*67e74705SXin Li // CHECK: {{.*}}:7:15: error: use of undeclared identifier 'b'
17*67e74705SXin Li // CHECK-NEXT: NO_DEFINITION(b);
18*67e74705SXin Li // CHECK-NEXT:               ^
19*67e74705SXin Li 
20*67e74705SXin Li 
21*67e74705SXin Li #define F(x) x + 1
22*67e74705SXin Li #define ADD(x,y) y + F(x)
23*67e74705SXin Li #define SWAP_ARGU(x,y) ADD(y,x)
24*67e74705SXin Li 
25*67e74705SXin Li int  p = SWAP_ARGU(3, x);
26*67e74705SXin Li 
27*67e74705SXin Li // CHECK: {{.*}}:25:23: error: use of undeclared identifier 'x'
28*67e74705SXin Li // CHECK-NEXT: int  p = SWAP_ARGU(3, x);
29*67e74705SXin Li // CHECK-NEXT:                       ^
30*67e74705SXin Li 
31*67e74705SXin Li #define APPLY(f,x,y) x f y
32*67e74705SXin Li 
33*67e74705SXin Li struct node {
34*67e74705SXin Li };
35*67e74705SXin Li 
36*67e74705SXin Li node ff;
37*67e74705SXin Li 
38*67e74705SXin Li int r = APPLY(+,ff,1);
39*67e74705SXin Li // CHECK: {{.*}}:38:15: error: invalid operands to binary expression ('node' and 'int')
40*67e74705SXin Li // CHECK-NEXT: int r = APPLY(+,ff,1);
41*67e74705SXin Li // CHECK-NEXT:               ^ ~~ ~
42*67e74705SXin Li // CHECK-NEXT: {{.*}}:31:24: note: expanded from macro 'APPLY'
43*67e74705SXin Li // CHECK-NEXT: #define APPLY(f,x,y) x f y
44*67e74705SXin Li // CHECK-NEXT:                      ~ ^ ~