Jordan Rose | 78541c4 | 2012-07-11 19:58:23 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -DTEST1 -verify %s |
| 2 | // RUN: %clang_cc1 -DTEST2 -verify %s 2>&1 | FileCheck -check-prefix=CHECK2 %s |
| 3 | // RUN: %clang_cc1 -DTEST3 -verify %s 2>&1 | FileCheck -check-prefix=CHECK3 %s |
| 4 | // RUN: %clang_cc1 -DTEST4 -verify %s 2>&1 | FileCheck -check-prefix=CHECK4 %s |
| 5 | // RUN: %clang_cc1 -DTEST5 -verify %s 2>&1 | FileCheck -check-prefix=CHECK5 %s |
| 6 | |
| 7 | // expected-warning@ malformed |
| 8 | // expected-error@7 1 {{missing or invalid line number}} |
| 9 | |
| 10 | // expected-warning@0 malformed |
| 11 | // expected-error@10 {{missing or invalid line number}} |
| 12 | |
| 13 | // expected-warning@-50 malformed |
| 14 | // expected-error@13 {{missing or invalid line number}} |
| 15 | |
| 16 | // expected-warning malformed |
| 17 | // expected-error@16 {{cannot find start}} |
| 18 | |
| 19 | // expected-error 0+ {{should also be ignored}} |
| 20 | |
| 21 | #ifdef TEST1 |
| 22 | #if 0 |
| 23 | // expected-error {{should be ignored}} |
| 24 | #endif |
Andy Gibbs | 4a529d2 | 2012-10-19 12:36:49 +0000 | [diff] [blame] | 25 | // eexpected-error {{should also be ignored: unrecognised directive}} |
Jordan Rose | 78541c4 | 2012-07-11 19:58:23 +0000 | [diff] [blame] | 26 | #error should not be ignored |
| 27 | // expected-error@-1 1+ {{should not be ignored}} |
| 28 | |
| 29 | #line 90 |
| 30 | unexpected a; // expected-error@+0 + {{unknown type}} |
| 31 | |
| 32 | #line 60 |
| 33 | unexpected b; // expected-error@33 1-1 {{unknown type}} |
| 34 | |
| 35 | // expected-error@+2 {{file not found}} check that multi-line handled correctly: \ |
| 36 | |
| 37 | #include "missing_header_file.include" |
| 38 | #endif |
| 39 | |
| 40 | #ifdef TEST2 |
| 41 | #define MACRO some_value // expected-error {{define_error}} |
| 42 | #undef MACRO extra_token // expected-warning {{undef_error}} |
| 43 | #line -2 // expected-error {{line_error}} |
| 44 | #error AAA // expected-error {{BBB}} <- this shall be part of diagnostic |
| 45 | #warning CCC // expected-warning {{DDD}} <- this shall be part of diagnostic |
| 46 | |
| 47 | #if 0 |
| 48 | // This is encapsulated in "#if 0" so that the expected-* checks below |
| 49 | // are not inadvertently included in the diagnostic checking! |
| 50 | |
| 51 | // CHECK2: error: 'error' diagnostics expected but not seen: |
| 52 | // CHECK2-NEXT: Line 41: define_error |
| 53 | // CHECK2-NEXT: Line 43: line_error |
| 54 | // CHECK2-NEXT: error: 'error' diagnostics seen but not expected: |
| 55 | // CHECK2-NEXT: Line 43: #line directive requires a positive integer argument |
| 56 | // CHECK2-NEXT: Line 44: AAA // expected-error {{[{][{]BBB[}][}]}} <- this shall be part of diagnostic |
| 57 | // CHECK2-NEXT: error: 'warning' diagnostics expected but not seen: |
| 58 | // CHECK2-NEXT: Line 42: undef_error |
| 59 | // CHECK2-NEXT: error: 'warning' diagnostics seen but not expected: |
| 60 | // CHECK2-NEXT: Line 42: extra tokens at end of #undef directive |
| 61 | // CHECK2-NEXT: Line 45: CCC // expected-warning {{[{][{]DDD[}][}]}} <- this shall be part of diagnostic |
| 62 | // CHECK2-NEXT: 7 errors generated. |
| 63 | #endif |
| 64 | #endif |
| 65 | |
| 66 | #ifdef TEST3 |
| 67 | #ifndef TEST3 // expected-note {{line_67}} |
| 68 | // expected-note {{line_68_ignored}} |
| 69 | # ifdef UNDEFINED // expected-note {{line_69_ignored}} |
| 70 | # endif // expected-note {{line_70_ignored}} |
| 71 | #elif defined(TEST3) // expected-note {{line_71}} |
| 72 | # if 1 // expected-note {{line_72}} |
| 73 | // expected-note {{line_73}} |
| 74 | # else // expected-note {{line_74}} |
| 75 | // expected-note {{line_75_ignored}} |
| 76 | # ifndef TEST3 // expected-note {{line_76_ignored}} |
| 77 | # endif // expected-note {{line_77_ignored}} |
| 78 | # endif // expected-note {{line_78}} |
| 79 | #endif |
| 80 | |
| 81 | // CHECK3: error: 'note' diagnostics expected but not seen: |
| 82 | // CHECK3-NEXT: Line 67: line_67 |
| 83 | // CHECK3-NEXT: Line 71: line_71 |
| 84 | // CHECK3-NEXT: Line 72: line_72 |
| 85 | // CHECK3-NEXT: Line 73: line_73 |
| 86 | // CHECK3-NEXT: Line 74: line_74 |
| 87 | // CHECK3-NEXT: Line 78: line_78 |
| 88 | // CHECK3-NEXT: 6 errors generated. |
| 89 | #endif |
| 90 | |
| 91 | #ifdef TEST4 |
| 92 | #include "missing_header_file.include" // expected-error {{include_error}} |
| 93 | |
| 94 | // CHECK4: error: 'error' diagnostics expected but not seen: |
| 95 | // CHECK4-NEXT: Line 92: include_error |
| 96 | // CHECK4-NEXT: error: 'error' diagnostics seen but not expected: |
| 97 | // CHECK4-NEXT: Line 92: 'missing_header_file.include' file not found |
| 98 | // CHECK4-NEXT: 2 errors generated. |
| 99 | #endif |
| 100 | |
| 101 | #ifdef TEST5 |
| 102 | #include "verify-directive.h" |
| 103 | // expected-error@50 {{source file test}} |
| 104 | |
| 105 | // CHECK5: error: 'error' diagnostics expected but not seen: |
| 106 | // CHECK5-NEXT: Line 1 (directive at {{.*}}verify-directive.h:2): include file test |
| 107 | // CHECK5-NEXT: Line 50 (directive at {{.*}}verify.c:103): source file test |
| 108 | // CHECK5-NEXT: 2 errors generated. |
| 109 | #endif |
| 110 | |
Jordan Rose | 7c304f5 | 2012-08-10 01:06:16 +0000 | [diff] [blame] | 111 | #if 0 |
| 112 | // RUN: %clang_cc1 -verify %t.invalid 2>&1 | FileCheck -check-prefix=CHECK6 %s |
| 113 | |
Andy Gibbs | 266dba3 | 2012-10-19 12:49:32 +0000 | [diff] [blame] | 114 | // CHECK6: error: no expected directives found: consider use of 'expected-no-diagnostics' |
| 115 | // CHECK6-NEXT: error: 'error' diagnostics seen but not expected: |
Jordan Rose | 7c304f5 | 2012-08-10 01:06:16 +0000 | [diff] [blame] | 116 | // CHECK6-NEXT: (frontend): error reading '{{.*}}verify.c.tmp.invalid' |
Andy Gibbs | 266dba3 | 2012-10-19 12:49:32 +0000 | [diff] [blame] | 117 | // CHECK6-NEXT: 2 errors generated. |
Jordan Rose | 7c304f5 | 2012-08-10 01:06:16 +0000 | [diff] [blame] | 118 | |
| 119 | // RUN: echo -e '//expected-error@2{{1}}\n#error 2' | %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 |