178541c433049322b27b4f437973076ba29cff709Jordan Rose// RUN: %clang_cc1 -DTEST1 -verify %s
296e7813f08c6adf1d8657b0da86741b54e850fd7Rafael Espindola// RUN: not %clang_cc1 -DTEST2 -verify %s 2>&1 | FileCheck -check-prefix=CHECK2 %s
396e7813f08c6adf1d8657b0da86741b54e850fd7Rafael Espindola// RUN: not %clang_cc1 -DTEST3 -verify %s 2>&1 | FileCheck -check-prefix=CHECK3 %s
496e7813f08c6adf1d8657b0da86741b54e850fd7Rafael Espindola// RUN: not %clang_cc1 -DTEST4 -verify %s 2>&1 | FileCheck -check-prefix=CHECK4 %s
596e7813f08c6adf1d8657b0da86741b54e850fd7Rafael Espindola// RUN: not %clang_cc1 -DTEST5 -verify %s 2>&1 | FileCheck -check-prefix=CHECK5 %s
678541c433049322b27b4f437973076ba29cff709Jordan Rose
778541c433049322b27b4f437973076ba29cff709Jordan Rose// expected-warning@ malformed
878541c433049322b27b4f437973076ba29cff709Jordan Rose// expected-error@7 1 {{missing or invalid line number}}
978541c433049322b27b4f437973076ba29cff709Jordan Rose
1078541c433049322b27b4f437973076ba29cff709Jordan Rose// expected-warning@0 malformed
1178541c433049322b27b4f437973076ba29cff709Jordan Rose// expected-error@10 {{missing or invalid line number}}
1278541c433049322b27b4f437973076ba29cff709Jordan Rose
1378541c433049322b27b4f437973076ba29cff709Jordan Rose// expected-warning@-50 malformed
1478541c433049322b27b4f437973076ba29cff709Jordan Rose// expected-error@13 {{missing or invalid line number}}
1578541c433049322b27b4f437973076ba29cff709Jordan Rose
1678541c433049322b27b4f437973076ba29cff709Jordan Rose// expected-warning malformed
1778541c433049322b27b4f437973076ba29cff709Jordan Rose// expected-error@16 {{cannot find start}}
1878541c433049322b27b4f437973076ba29cff709Jordan Rose
1978541c433049322b27b4f437973076ba29cff709Jordan Rose// expected-error 0+ {{should also be ignored}}
2078541c433049322b27b4f437973076ba29cff709Jordan Rose
2178541c433049322b27b4f437973076ba29cff709Jordan Rose#ifdef TEST1
2278541c433049322b27b4f437973076ba29cff709Jordan Rose#if 0
2378541c433049322b27b4f437973076ba29cff709Jordan Rose// expected-error {{should be ignored}}
2478541c433049322b27b4f437973076ba29cff709Jordan Rose#endif
254a529d26d6ccfc9b3d11031f1256f4f87055c562Andy Gibbs// eexpected-error {{should also be ignored: unrecognised directive}}
2678541c433049322b27b4f437973076ba29cff709Jordan Rose#error should not be ignored
2778541c433049322b27b4f437973076ba29cff709Jordan Rose// expected-error@-1 1+ {{should not be ignored}}
2878541c433049322b27b4f437973076ba29cff709Jordan Rose
2978541c433049322b27b4f437973076ba29cff709Jordan Rose#line 90
3078541c433049322b27b4f437973076ba29cff709Jordan Roseunexpected a; // expected-error@+0 + {{unknown type}}
3178541c433049322b27b4f437973076ba29cff709Jordan Rose
3278541c433049322b27b4f437973076ba29cff709Jordan Rose#line 60
3378541c433049322b27b4f437973076ba29cff709Jordan Roseunexpected b; // expected-error@33 1-1 {{unknown type}}
3478541c433049322b27b4f437973076ba29cff709Jordan Rose
3578541c433049322b27b4f437973076ba29cff709Jordan Rose// expected-error@+2 {{file not found}} check that multi-line handled correctly: \
3678541c433049322b27b4f437973076ba29cff709Jordan Rose
3778541c433049322b27b4f437973076ba29cff709Jordan Rose#include "missing_header_file.include"
3878541c433049322b27b4f437973076ba29cff709Jordan Rose#endif
3978541c433049322b27b4f437973076ba29cff709Jordan Rose
4078541c433049322b27b4f437973076ba29cff709Jordan Rose#ifdef TEST2
4178541c433049322b27b4f437973076ba29cff709Jordan Rose#define MACRO some_value // expected-error {{define_error}}
4278541c433049322b27b4f437973076ba29cff709Jordan Rose#undef MACRO extra_token // expected-warning {{undef_error}}
4378541c433049322b27b4f437973076ba29cff709Jordan Rose#line -2                 // expected-error {{line_error}}
4478541c433049322b27b4f437973076ba29cff709Jordan Rose#error AAA               // expected-error {{BBB}} <- this shall be part of diagnostic
4578541c433049322b27b4f437973076ba29cff709Jordan Rose#warning CCC             // expected-warning {{DDD}} <- this shall be part of diagnostic
4678541c433049322b27b4f437973076ba29cff709Jordan Rose
4778541c433049322b27b4f437973076ba29cff709Jordan Rose#if 0
4878541c433049322b27b4f437973076ba29cff709Jordan Rose// This is encapsulated in "#if 0" so that the expected-* checks below
4978541c433049322b27b4f437973076ba29cff709Jordan Rose// are not inadvertently included in the diagnostic checking!
5078541c433049322b27b4f437973076ba29cff709Jordan Rose
5178541c433049322b27b4f437973076ba29cff709Jordan Rose//      CHECK2: error: 'error' diagnostics expected but not seen:
5278541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK2-NEXT:   Line 41: define_error
5378541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK2-NEXT:   Line 43: line_error
5478541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK2-NEXT: error: 'error' diagnostics seen but not expected:
5578541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK2-NEXT:   Line 43: #line directive requires a positive integer argument
5678541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK2-NEXT:   Line 44: AAA // expected-error {{[{][{]BBB[}][}]}} <- this shall be part of diagnostic
5778541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK2-NEXT: error: 'warning' diagnostics expected but not seen:
5878541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK2-NEXT:   Line 42: undef_error
5978541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK2-NEXT: error: 'warning' diagnostics seen but not expected:
6078541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK2-NEXT:   Line 42: extra tokens at end of #undef directive
6178541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK2-NEXT:   Line 45: CCC // expected-warning {{[{][{]DDD[}][}]}} <- this shall be part of diagnostic
6278541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK2-NEXT: 7 errors generated.
6378541c433049322b27b4f437973076ba29cff709Jordan Rose#endif
6478541c433049322b27b4f437973076ba29cff709Jordan Rose#endif
6578541c433049322b27b4f437973076ba29cff709Jordan Rose
6678541c433049322b27b4f437973076ba29cff709Jordan Rose#ifdef TEST3
6778541c433049322b27b4f437973076ba29cff709Jordan Rose#ifndef TEST3         // expected-note {{line_67}}
6878541c433049322b27b4f437973076ba29cff709Jordan Rose                      // expected-note {{line_68_ignored}}
6978541c433049322b27b4f437973076ba29cff709Jordan Rose# ifdef UNDEFINED     // expected-note {{line_69_ignored}}
7078541c433049322b27b4f437973076ba29cff709Jordan Rose# endif               // expected-note {{line_70_ignored}}
7178541c433049322b27b4f437973076ba29cff709Jordan Rose#elif defined(TEST3)  // expected-note {{line_71}}
7278541c433049322b27b4f437973076ba29cff709Jordan Rose# if 1                // expected-note {{line_72}}
7378541c433049322b27b4f437973076ba29cff709Jordan Rose                      // expected-note {{line_73}}
7478541c433049322b27b4f437973076ba29cff709Jordan Rose# else                // expected-note {{line_74}}
7578541c433049322b27b4f437973076ba29cff709Jordan Rose                      // expected-note {{line_75_ignored}}
7678541c433049322b27b4f437973076ba29cff709Jordan Rose#  ifndef TEST3       // expected-note {{line_76_ignored}}
7778541c433049322b27b4f437973076ba29cff709Jordan Rose#  endif              // expected-note {{line_77_ignored}}
7878541c433049322b27b4f437973076ba29cff709Jordan Rose# endif               // expected-note {{line_78}}
7978541c433049322b27b4f437973076ba29cff709Jordan Rose#endif
8078541c433049322b27b4f437973076ba29cff709Jordan Rose
8178541c433049322b27b4f437973076ba29cff709Jordan Rose//      CHECK3: error: 'note' diagnostics expected but not seen:
8278541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK3-NEXT:   Line 67: line_67
8378541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK3-NEXT:   Line 71: line_71
8478541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK3-NEXT:   Line 72: line_72
8578541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK3-NEXT:   Line 73: line_73
8678541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK3-NEXT:   Line 74: line_74
8778541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK3-NEXT:   Line 78: line_78
8878541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK3-NEXT: 6 errors generated.
8978541c433049322b27b4f437973076ba29cff709Jordan Rose#endif
9078541c433049322b27b4f437973076ba29cff709Jordan Rose
9178541c433049322b27b4f437973076ba29cff709Jordan Rose#ifdef TEST4
9278541c433049322b27b4f437973076ba29cff709Jordan Rose#include "missing_header_file.include" // expected-error {{include_error}}
9378541c433049322b27b4f437973076ba29cff709Jordan Rose
9478541c433049322b27b4f437973076ba29cff709Jordan Rose//      CHECK4: error: 'error' diagnostics expected but not seen:
9578541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK4-NEXT:   Line 92: include_error
9678541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK4-NEXT: error: 'error' diagnostics seen but not expected:
9778541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK4-NEXT:   Line 92: 'missing_header_file.include' file not found
9878541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK4-NEXT: 2 errors generated.
9978541c433049322b27b4f437973076ba29cff709Jordan Rose#endif
10078541c433049322b27b4f437973076ba29cff709Jordan Rose
10178541c433049322b27b4f437973076ba29cff709Jordan Rose#ifdef TEST5
10278541c433049322b27b4f437973076ba29cff709Jordan Rose#include "verify-directive.h"
10378541c433049322b27b4f437973076ba29cff709Jordan Rose// expected-error@50 {{source file test}}
10478541c433049322b27b4f437973076ba29cff709Jordan Rose
10578541c433049322b27b4f437973076ba29cff709Jordan Rose//      CHECK5: error: 'error' diagnostics expected but not seen:
10678541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK5-NEXT:   Line 1 (directive at {{.*}}verify-directive.h:2): include file test
10778541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK5-NEXT:   Line 50 (directive at {{.*}}verify.c:103): source file test
10878541c433049322b27b4f437973076ba29cff709Jordan Rose// CHECK5-NEXT: 2 errors generated.
10978541c433049322b27b4f437973076ba29cff709Jordan Rose#endif
11078541c433049322b27b4f437973076ba29cff709Jordan Rose
1117c304f56eecbd03db7d222a05dfcd593750d50d3Jordan Rose#if 0
11296e7813f08c6adf1d8657b0da86741b54e850fd7Rafael Espindola// RUN: not %clang_cc1 -verify %t.invalid 2>&1 | FileCheck -check-prefix=CHECK6 %s
1137c304f56eecbd03db7d222a05dfcd593750d50d3Jordan Rose
114266dba3661928d26f043560b169bea87578aa917Andy Gibbs//      CHECK6: error: no expected directives found: consider use of 'expected-no-diagnostics'
115266dba3661928d26f043560b169bea87578aa917Andy Gibbs// CHECK6-NEXT: error: 'error' diagnostics seen but not expected:
1167c304f56eecbd03db7d222a05dfcd593750d50d3Jordan Rose// CHECK6-NEXT:   (frontend): error reading '{{.*}}verify.c.tmp.invalid'
117266dba3661928d26f043560b169bea87578aa917Andy Gibbs// CHECK6-NEXT: 2 errors generated.
1187c304f56eecbd03db7d222a05dfcd593750d50d3Jordan Rose
119a4516a5fea62c1b6e2123b9c8b1627905e790963Daniel Dunbar// RUN: printf '//expected-error@2{{1}}\n#error 2\n' | not %clang_cc1 -verify 2>&1 | FileCheck -check-prefix=CHECK7 %s
1207c304f56eecbd03db7d222a05dfcd593750d50d3Jordan Rose
1217c304f56eecbd03db7d222a05dfcd593750d50d3Jordan Rose//      CHECK7: error: 'error' diagnostics expected but not seen:
1227c304f56eecbd03db7d222a05dfcd593750d50d3Jordan Rose// CHECK7-NEXT:   Line 2 (directive at <stdin>:1): 1
1237c304f56eecbd03db7d222a05dfcd593750d50d3Jordan Rose// CHECK7-NEXT: error: 'error' diagnostics seen but not expected:
1247c304f56eecbd03db7d222a05dfcd593750d50d3Jordan Rose// CHECK7-NEXT:   Line 2: 2
1257c304f56eecbd03db7d222a05dfcd593750d50d3Jordan Rose// CHECK7-NEXT: 2 errors generated.
1267c304f56eecbd03db7d222a05dfcd593750d50d3Jordan Rose#endif
127b42f200777a66b98989160bf3987ce431540a584Andy Gibbs
128b42f200777a66b98989160bf3987ce431540a584Andy Gibbs#ifdef TEST8
12996e7813f08c6adf1d8657b0da86741b54e850fd7Rafael Espindola// RUN: not %clang_cc1 -DTEST8 -verify %s 2>&1 | FileCheck -check-prefix=CHECK8 %s
130b42f200777a66b98989160bf3987ce431540a584Andy Gibbs
13185e10d20e2e636cac6735cc7e64118b13259ce1bAlp Toker// expected-warning@nonexistent-file:1 {{ }}
13285e10d20e2e636cac6735cc7e64118b13259ce1bAlp Toker// expected-error@-1 {{file 'nonexistent-file' could not be located}}
133b42f200777a66b98989160bf3987ce431540a584Andy Gibbs
134b42f200777a66b98989160bf3987ce431540a584Andy Gibbs// expected-warning@verify-directive.h: {{ }}
135b42f200777a66b98989160bf3987ce431540a584Andy Gibbs// expected-error@-1 {{missing or invalid line number}}
136b42f200777a66b98989160bf3987ce431540a584Andy Gibbs
137c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hines// expected-warning@verify-directive.h:0 {{ }}
138c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hines// expected-error@-1 {{missing or invalid line number}}
139c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hines
140c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hines// expected-warning@verify-directive.h:0*{{ }}
141c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hines// expected-error@-1 {{missing or invalid line number}}
142c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hines
143c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hines// expected-warning@verify-directive.h:*0{{ }}
144c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hines// syntactically ok -- means match in any line for 0 occurrences.
145c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hines
146b42f200777a66b98989160bf3987ce431540a584Andy Gibbs// expected-warning@verify-directive.h:1 {{diagnostic}}
147b42f200777a66b98989160bf3987ce431540a584Andy Gibbs
148b42f200777a66b98989160bf3987ce431540a584Andy Gibbs//      CHECK8: error: 'warning' diagnostics expected but not seen:
149c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hines// CHECK8-NEXT:   File {{.*}}verify-directive.h Line 1 (directive at {{.*}}verify.c:146): diagnostic
150b42f200777a66b98989160bf3987ce431540a584Andy Gibbs// CHECK8-NEXT: 1 error generated.
151b42f200777a66b98989160bf3987ce431540a584Andy Gibbs#endif
152