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