15f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes// RUN: %clang_cc1 -DTEST1 -verify %s 25f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes// RUN: not %clang_cc1 -DTEST2 -verify %s 2>&1 | FileCheck -check-prefix=CHECK2 %s 35f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes// RUN: not %clang_cc1 -DTEST3 -verify %s 2>&1 | FileCheck -check-prefix=CHECK3 %s 45f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes// RUN: not %clang_cc1 -DTEST4 -verify %s 2>&1 | FileCheck -check-prefix=CHECK4 %s 55f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes// RUN: not %clang_cc1 -DTEST5 -verify %s 2>&1 | FileCheck -check-prefix=CHECK5 %s 65f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 75f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes// expected-warning@ malformed 85f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes// expected-error@7 1 {{missing or invalid line number}} 95f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes// expected-warning@0 malformed 115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes// expected-error@10 {{missing or invalid line number}} 128d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang 138d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang// expected-warning@-50 malformed 148d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang// expected-error@13 {{missing or invalid line number}} 158d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang 168d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang// expected-warning malformed 172aee48938c6f1a389879e8baa60e979b5b729148Sebastien Hertz// expected-error@16 {{cannot find start}} 182aee48938c6f1a389879e8baa60e979b5b729148Sebastien Hertz 192aee48938c6f1a389879e8baa60e979b5b729148Sebastien Hertz// expected-error 0+ {{should also be ignored}} 208d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang 218d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang#ifdef TEST1 2271dd891bb89a38cf26be412eb894f804f16a0b7aTsu Chiang Chuang#if 0 238d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang// expected-error {{should be ignored}} 248d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang#endif 258d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang// eexpected-error {{should also be ignored: unrecognised directive}} 268d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang#error should not be ignored 278d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang// expected-error@-1 1+ {{should not be ignored}} 288d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang 298d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang#line 90 3071dd891bb89a38cf26be412eb894f804f16a0b7aTsu Chiang Chuangunexpected a; // expected-error@+0 + {{unknown type}} 318d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang 328d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang#line 60 338d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuangunexpected b; // expected-error@33 1-1 {{unknown type}} 348d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang 358d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang// expected-error@+2 {{file not found}} check that multi-line handled correctly: \ 3671dd891bb89a38cf26be412eb894f804f16a0b7aTsu Chiang Chuang 3771dd891bb89a38cf26be412eb894f804f16a0b7aTsu Chiang Chuang#include "missing_header_file.include" 3871dd891bb89a38cf26be412eb894f804f16a0b7aTsu Chiang Chuang#endif 3971dd891bb89a38cf26be412eb894f804f16a0b7aTsu Chiang Chuang 4071dd891bb89a38cf26be412eb894f804f16a0b7aTsu Chiang Chuang#ifdef TEST2 418d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang#define MACRO some_value // expected-error {{define_error}} 428d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang#undef MACRO extra_token // expected-warning {{undef_error}} 438d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang#line -2 // expected-error {{line_error}} 448d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang#error AAA // expected-error {{BBB}} <- this shall be part of diagnostic 458d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang#warning CCC // expected-warning {{DDD}} <- this shall be part of diagnostic 468d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang 478d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang#if 0 488d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang// This is encapsulated in "#if 0" so that the expected-* checks below 498d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang// are not inadvertently included in the diagnostic checking! 5071dd891bb89a38cf26be412eb894f804f16a0b7aTsu Chiang Chuang 518d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang// CHECK2: error: 'error' diagnostics expected but not seen: 528d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang// CHECK2-NEXT: Line 41: define_error 535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes// CHECK2-NEXT: Line 43: line_error 545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes// CHECK2-NEXT: error: 'error' diagnostics seen but not expected: 55f0b10c7b3de1a61e531d5775417c37fe42021ee4Elliott Hughes// CHECK2-NEXT: Line 43: #line directive requires a positive integer argument 56348bf15315b2da38964762d22955bd682359fff2Tsu Chiang Chuang// CHECK2-NEXT: Line 44: AAA // expected-error {{[{][{]BBB[}][}]}} <- this shall be part of diagnostic 579a87b87557db22896b45f9b43e7a03cd9fdcb106Elliott Hughes// CHECK2-NEXT: error: 'warning' diagnostics expected but not seen: 585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes// CHECK2-NEXT: Line 42: undef_error 595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes// CHECK2-NEXT: error: 'warning' diagnostics seen but not expected: 60bff9fb7e654a9fee9f7ef7f9ebf3c150da6d15f6Tsu Chiang Chuang// CHECK2-NEXT: Line 42: extra tokens at end of #undef directive 615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes// CHECK2-NEXT: Line 45: CCC // expected-warning {{[{][{]DDD[}][}]}} <- this shall be part of diagnostic 625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes// CHECK2-NEXT: 7 errors generated. 632d5b22d49cac12d5387c36c090230e2c1f1bc7d0Elliott Hughes#endif 642d5b22d49cac12d5387c36c090230e2c1f1bc7d0Elliott Hughes#endif 652d5b22d49cac12d5387c36c090230e2c1f1bc7d0Elliott Hughes 669a87b87557db22896b45f9b43e7a03cd9fdcb106Elliott Hughes#ifdef TEST3 679a87b87557db22896b45f9b43e7a03cd9fdcb106Elliott Hughes#ifndef TEST3 // expected-note {{line_67}} 689a87b87557db22896b45f9b43e7a03cd9fdcb106Elliott Hughes // expected-note {{line_68_ignored}} 699a87b87557db22896b45f9b43e7a03cd9fdcb106Elliott Hughes# ifdef UNDEFINED // expected-note {{line_69_ignored}} 709a87b87557db22896b45f9b43e7a03cd9fdcb106Elliott Hughes# endif // expected-note {{line_70_ignored}} 7121a5212937e9f06496eacc836d540123ea194ee7Brian Carlstrom#elif defined(TEST3) // expected-note {{line_71}} 729a87b87557db22896b45f9b43e7a03cd9fdcb106Elliott Hughes# if 1 // expected-note {{line_72}} 738435047d3e43a34ec1972a844737aa2102a570d6Brian Carlstrom // expected-note {{line_73}} 742d5b22d49cac12d5387c36c090230e2c1f1bc7d0Elliott Hughes# else // expected-note {{line_74}} 755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes // expected-note {{line_75_ignored}} 765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes# ifndef TEST3 // expected-note {{line_76_ignored}} 77559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertz# endif // expected-note {{line_77_ignored}} 78559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertz# endif // expected-note {{line_78}} 79559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertz#endif 80559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertz 81559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertz// CHECK3: error: 'note' diagnostics expected but not seen: 82559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertz// CHECK3-NEXT: Line 67: line_67 83559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertz// CHECK3-NEXT: Line 71: line_71 84559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertz// CHECK3-NEXT: Line 72: line_72 85559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertz// CHECK3-NEXT: Line 73: line_73 86559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertz// CHECK3-NEXT: Line 74: line_74 87f0b10c7b3de1a61e531d5775417c37fe42021ee4Elliott Hughes// CHECK3-NEXT: Line 78: line_78 8831fe38c771ae6d717600f01eb577e8a4cd5ab378Elliott Hughes// CHECK3-NEXT: 6 errors generated. 8931fe38c771ae6d717600f01eb577e8a4cd5ab378Elliott Hughes#endif 905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes#ifdef TEST4 925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes#include "missing_header_file.include" // expected-error {{include_error}} 93559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertz 94559758352e3839e8d8dd5d31525819329bd57a31Sebastien Hertz// CHECK4: error: 'error' diagnostics expected but not seen: 95966a5ab08d2b77b99ec0e43460598fd376262530Elliott Hughes// CHECK4-NEXT: Line 92: include_error 968d4fdfa6ab6520f8c481e7cac80f8a26bafa21aaTsu Chiang Chuang// CHECK4-NEXT: error: 'error' diagnostics seen but not expected: 979a87b87557db22896b45f9b43e7a03cd9fdcb106Elliott Hughes// CHECK4-NEXT: Line 92: 'missing_header_file.include' file not found 989a87b87557db22896b45f9b43e7a03cd9fdcb106Elliott Hughes// CHECK4-NEXT: 2 errors generated. 999a87b87557db22896b45f9b43e7a03cd9fdcb106Elliott Hughes#endif 1009a87b87557db22896b45f9b43e7a03cd9fdcb106Elliott Hughes 10154fe82258da2c4a316a2629521175d98006d00eeSebastien Hertz#ifdef TEST5 1029a87b87557db22896b45f9b43e7a03cd9fdcb106Elliott Hughes#include "verify-directive.h" 1035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes// expected-error@50 {{source file test}} 1045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1059a87b87557db22896b45f9b43e7a03cd9fdcb106Elliott Hughes// CHECK5: error: 'error' diagnostics expected but not seen: 1065d36ea7c6bdfa6fbcd1ccd53465fe41d7225273bElliott Hughes// CHECK5-NEXT: Line 1 (directive at {{.*}}verify-directive.h:2): include file test 1075d36ea7c6bdfa6fbcd1ccd53465fe41d7225273bElliott Hughes// CHECK5-NEXT: Line 50 (directive at {{.*}}verify.c:103): source file test 1082d5b22d49cac12d5387c36c090230e2c1f1bc7d0Elliott Hughes// CHECK5-NEXT: 2 errors generated. 1092d5b22d49cac12d5387c36c090230e2c1f1bc7d0Elliott Hughes#endif 1102d5b22d49cac12d5387c36c090230e2c1f1bc7d0Elliott Hughes 1119a87b87557db22896b45f9b43e7a03cd9fdcb106Elliott Hughes#if 0 1129a87b87557db22896b45f9b43e7a03cd9fdcb106Elliott Hughes// RUN: not %clang_cc1 -verify %t.invalid 2>&1 | FileCheck -check-prefix=CHECK6 %s 1132d5b22d49cac12d5387c36c090230e2c1f1bc7d0Elliott Hughes 1142d5b22d49cac12d5387c36c090230e2c1f1bc7d0Elliott Hughes// CHECK6: error: no expected directives found: consider use of 'expected-no-diagnostics' 1152d5b22d49cac12d5387c36c090230e2c1f1bc7d0Elliott Hughes// CHECK6-NEXT: error: 'error' diagnostics seen but not expected: 1165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes// CHECK6-NEXT: (frontend): error reading '{{.*}}verify.c.tmp.invalid' 117// CHECK6-NEXT: 2 errors generated. 118 119// RUN: printf '//expected-error@2{{1}}\n#error 2\n' | not %clang_cc1 -verify 2>&1 | FileCheck -check-prefix=CHECK7 %s 120 121// CHECK7: error: 'error' diagnostics expected but not seen: 122// CHECK7-NEXT: Line 2 (directive at <stdin>:1): 1 123// CHECK7-NEXT: error: 'error' diagnostics seen but not expected: 124// CHECK7-NEXT: Line 2: 2 125// CHECK7-NEXT: 2 errors generated. 126#endif 127 128#ifdef TEST8 129// RUN: not %clang_cc1 -DTEST8 -verify %s 2>&1 | FileCheck -check-prefix=CHECK8 %s 130 131// expected-warning@nonexistent-file:1 {{ }} 132// expected-error@-1 {{file 'nonexistent-file' could not be located}} 133 134// expected-warning@verify-directive.h: {{ }} 135// expected-error@-1 {{missing or invalid line number}} 136 137// expected-warning@verify-directive.h:0 {{ }} 138// expected-error@-1 {{missing or invalid line number}} 139 140// expected-warning@verify-directive.h:0*{{ }} 141// expected-error@-1 {{missing or invalid line number}} 142 143// expected-warning@verify-directive.h:*0{{ }} 144// syntactically ok -- means match in any line for 0 occurrences. 145 146// expected-warning@verify-directive.h:1 {{diagnostic}} 147 148// CHECK8: error: 'warning' diagnostics expected but not seen: 149// CHECK8-NEXT: File {{.*}}verify-directive.h Line 1 (directive at {{.*}}verify.c:146): diagnostic 150// CHECK8-NEXT: 1 error generated. 151#endif 152