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