1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
// RUN: %clang_cc1 %s -Eonly -verify
#ifdef FOO
#elifdef BAR
#error "did not expect to get here"
#endif
/* expected-error@+4 {{"got it"}} */
#ifdef FOO
#elifdef BAR
#else
#error "got it"
#endif
/* expected-error@+3 {{"got it"}} */
#ifdef FOO
#elifndef BAR
#error "got it"
#endif
/* expected-error@+3 {{"got it"}} */
#ifdef FOO
#elifndef BAR
#error "got it"
#else
#error "did not expect to get here"
#endif
#define BAR
/* expected-error@+3 {{"got it"}} */
#ifdef FOO
#elifdef BAR
#error "got it"
#endif
#undef BAR
#ifdef FOO
#elifdef BAR // test that comments aren't an issue
#error "did not expect to get here"
#endif
/* expected-error@+4 {{"got it"}} */
#ifdef FOO
#elifdef BAR // test that comments aren't an issue
#else
#error "got it"
#endif
/* expected-error@+3 {{"got it"}} */
#ifdef FOO
#elifndef BAR // test that comments aren't an issue
#error "got it"
#endif
/* expected-error@+3 {{"got it"}} */
#ifdef FOO
#elifndef BAR // test that comments aren't an issue
#error "got it"
#else
#error "did not expect to get here"
#endif
#define BAR
/* expected-error@+3 {{"got it"}} */
#ifdef FOO
#elifdef BAR // test that comments aren't an issue
#error "got it"
#endif
#undef BAR
#define BAR
/* expected-error@+6 {{"got it"}} */
#ifdef FOO
#error "did not expect to get here"
#elifndef BAR
#error "did not expect to get here"
#else
#error "got it"
#endif
#undef BAR
/* expected-error@+3 {{#elifdef after #else}} */
#ifdef FOO
#else
#elifdef BAR
#endif
/* expected-error@+3 {{#elifndef after #else}} */
#ifdef FOO
#else
#elifndef BAR
#endif
#elifdef FOO /* expected-error {{#elifdef without #if}} */
#endif /* expected-error {{#endif without #if}} */
#elifndef FOO /* expected-error {{#elifndef without #if}} */
#endif /* expected-error {{#endif without #if}} */
/* Note, we do not expect errors about the missing macro name in the skipped
blocks. This is consistent with #elif behavior. */
/* expected-error@+2 {{"got it"}} */
#ifndef FOO
#error "got it"
#elifdef
#elifndef
#endif
/* expected-error@+3 {{#elif after #else}}*/
#if 1
#else
#elif
#endif
|