xref: /aosp_15_r20/external/clang/test/Misc/diag-verify.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: not %clang_cc1 -fsyntax-only -verify %s 2>&1 | FileCheck %s
2*67e74705SXin Li 
3*67e74705SXin Li // Test the -verify flag.  Each of the "x = y;" lines will produce a
4*67e74705SXin Li // "use of undeclared identifier 'y'" error message.
5*67e74705SXin Li 
test()6*67e74705SXin Li void test() {
7*67e74705SXin Li   int x;
8*67e74705SXin Li   // Proper matches here.
9*67e74705SXin Li   x = y; // expected-error{{use of undeclared identifier 'y'}}
10*67e74705SXin Li   x = y; // expected-error{{use of undeclared identifier}}
11*67e74705SXin Li   x = y; // expected-error{{undeclared identifier 'y'}}
12*67e74705SXin Li   x = y; // expected-error{{use of}}
13*67e74705SXin Li   x = y; // expected-error{{undeclared identifier}}
14*67e74705SXin Li   x = y; // expected-error{{'y'}}
15*67e74705SXin Li 
16*67e74705SXin Li   // Bad matches here.
17*67e74705SXin Li   x = y; // expected-error{{use of undeclared identifier 'y' is fine}}
18*67e74705SXin Li   x = y; // expected-error{{abuse of undeclared identifier 'y'}}
19*67e74705SXin Li   x = y; // expected-error{{good use of undeclared identifier 'y' in code}}
20*67e74705SXin Li   x = y; // expected-error{{ use of undeclared identifier 'y' }}
21*67e74705SXin Li   x = y; // expected-error{{use of undeclared identifier 'y' is disallowed}}
22*67e74705SXin Li   x = y; // expected-error{{please don't use of undeclared identifier 'y'}}
23*67e74705SXin Li   x = y; // expected-error{{use of undeclared identifier 'y'; please declare y before use}}
24*67e74705SXin Li   x = y; // expected-error{{use of use of undeclared identifier 'y'}}
25*67e74705SXin Li   x = y; // expected-error{{use of undeclared identifier 'y' identifier 'y'}}
26*67e74705SXin Li }
27*67e74705SXin Li 
28*67e74705SXin Li //CHECK: error: 'error' diagnostics expected but not seen:
29*67e74705SXin Li //CHECK:   Line 17: use of undeclared identifier 'y' is fine
30*67e74705SXin Li //CHECK:   Line 18: abuse of undeclared identifier 'y'
31*67e74705SXin Li //CHECK:   Line 19: good use of undeclared identifier 'y' in code
32*67e74705SXin Li //CHECK:   Line 20:  use of undeclared identifier 'y'
33*67e74705SXin Li //CHECK:   Line 21: use of undeclared identifier 'y' is disallowed
34*67e74705SXin Li //CHECK:   Line 22: please don't use of undeclared identifier 'y'
35*67e74705SXin Li //CHECK:   Line 23: use of undeclared identifier 'y'; please declare y before use
36*67e74705SXin Li //CHECK:   Line 24: use of use of undeclared identifier 'y'
37*67e74705SXin Li //CHECK:   Line 25: use of undeclared identifier 'y' identifier 'y'
38*67e74705SXin Li //CHECK: error: 'error' diagnostics seen but not expected:
39*67e74705SXin Li //CHECK:   Line 17: use of undeclared identifier 'y'
40*67e74705SXin Li //CHECK:   Line 18: use of undeclared identifier 'y'
41*67e74705SXin Li //CHECK:   Line 19: use of undeclared identifier 'y'
42*67e74705SXin Li //CHECK:   Line 20: use of undeclared identifier 'y'
43*67e74705SXin Li //CHECK:   Line 21: use of undeclared identifier 'y'
44*67e74705SXin Li //CHECK:   Line 22: use of undeclared identifier 'y'
45*67e74705SXin Li //CHECK:   Line 23: use of undeclared identifier 'y'
46*67e74705SXin Li //CHECK:   Line 24: use of undeclared identifier 'y'
47*67e74705SXin Li //CHECK:   Line 25: use of undeclared identifier 'y'
48*67e74705SXin Li //CHECK: 18 errors generated.
49