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