1  /* Test #elifdef and #elifndef in C2x: erroneous usages.  */
       2  /* { dg-do preprocess } */
       3  /* { dg-options "-std=c2x -pedantic-errors" } */
       4  
       5  #define A
       6  #undef B
       7  
       8  #elifdef A /* { dg-error "#elifdef without #if" } */
       9  #elifdef B /* { dg-error "#elifdef without #if" } */
      10  #elifndef A /* { dg-error "#elifndef without #if" } */
      11  #elifndef B /* { dg-error "#elifndef without #if" } */
      12  
      13  #if 1 /* { dg-error "-:began here" } */
      14  #else
      15  #elifdef A /* { dg-error "#elifdef after #else" } */
      16  #endif
      17  
      18  #if 1 /* { dg-error "-:began here" } */
      19  #else
      20  #elifdef B /* { dg-error "#elifdef after #else" } */
      21  #endif
      22  
      23  #if 1 /* { dg-error "-:began here" } */
      24  #else
      25  #elifndef A /* { dg-error "#elifndef after #else" } */
      26  #endif
      27  
      28  #if 1 /* { dg-error "-:began here" } */
      29  #else
      30  #elifndef B /* { dg-error "#elifndef after #else" } */
      31  #endif
      32  
      33  #if 0
      34  #elifdef A = /* { dg-error "extra tokens at end of #elifdef directive" } */
      35  #endif
      36  
      37  #if 0
      38  #elifdef B = /* { dg-error "extra tokens at end of #elifdef directive" } */
      39  #endif
      40  
      41  #if 0
      42  #elifndef A = /* { dg-error "extra tokens at end of #elifndef directive" } */
      43  #endif
      44  
      45  #if 0
      46  #elifndef B = /* { dg-error "extra tokens at end of #elifndef directive" } */
      47  #endif
      48  
      49  #if 0
      50  #elifdef /* { dg-error "no macro name given in #elifdef directive" } */
      51  #endif
      52  
      53  #if 0
      54  #elifndef /* { dg-error "no macro name given in #elifndef directive" } */
      55  #endif
      56  
      57  #if 0
      58  #elifdef , /* { dg-error "macro names must be identifiers" } */
      59  #endif
      60  
      61  #if 0
      62  #elifndef , /* { dg-error "macro names must be identifiers" } */
      63  #endif