(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
diagnostic-token-ranges.c
       1  /* { dg-options "-fdiagnostics-show-caret -Wc++-compat -std=c11 -pedantic" } */
       2  
       3  /* Verify that various diagnostics show source code ranges.  */
       4  
       5  long double nanl (const char *);
       6  
       7  /* These ones merely use token ranges; they don't use tree ranges.  */
       8  
       9  void undeclared_identifier (void)
      10  {
      11    name; /* { dg-error "'name' undeclared" } */
      12  /*
      13  { dg-begin-multiline-output "" }
      14     name;
      15     ^~~~
      16  { dg-end-multiline-output "" }
      17  */
      18  }
      19  
      20  void unknown_type_name (void)
      21  {
      22    foo bar; /* { dg-error "unknown type name 'foo'" } */
      23  /*
      24  { dg-begin-multiline-output "" }
      25     foo bar;
      26     ^~~
      27  { dg-end-multiline-output "" }
      28  */
      29  
      30    qux *baz; /* { dg-error "unknown type name 'qux'" } */
      31  /*
      32  { dg-begin-multiline-output "" }
      33     qux *baz;
      34     ^~~
      35  { dg-end-multiline-output "" }
      36  */
      37  }
      38  
      39  void test_identifier_conflicts_with_cplusplus (void)
      40  {
      41    int new; /* { dg-warning "identifier 'new' conflicts with" } */
      42  /*
      43  { dg-begin-multiline-output "" }
      44     int new;
      45         ^~~
      46  { dg-end-multiline-output "" }
      47  */
      48  }
      49  
      50  extern void
      51  bogus_varargs (...); /* { dg-warning "ISO C requires a named argument before '...'" } */
      52  /*
      53  { dg-begin-multiline-output "" }
      54   bogus_varargs (...);
      55                  ^~~
      56  { dg-end-multiline-output "" }
      57  */
      58  
      59  extern void
      60  foo (unknown_type param); /* { dg-error "unknown type name 'unknown_type'" } */
      61  /*
      62  { dg-begin-multiline-output "" }
      63   foo (unknown_type param);
      64        ^~~~~~~~~~~~
      65  { dg-end-multiline-output "" }
      66  */
      67  
      68  void wide_string_literal_in_asm (void)
      69  {
      70    __asm (L"nop"); /* { dg-error "a wide string is invalid in this context" } */
      71  /*
      72  { dg-begin-multiline-output "" }
      73     __asm (L"nop");
      74            ^~~~~~
      75  { dg-end-multiline-output "" }
      76  */
      77  }
      78  
      79  void break_and_continue_in_wrong_places (void)
      80  {
      81    if (0)
      82      break; /* { dg-error "break statement not within loop or switch" } */
      83  /* { dg-begin-multiline-output "" }
      84       break;
      85       ^~~~~
      86     { dg-end-multiline-output "" } */
      87  
      88    if (1)
      89      ;
      90    else
      91      continue; /* { dg-error "continue statement not within a loop" } */
      92  /* { dg-begin-multiline-output "" }
      93       continue;
      94       ^~~~~~~~
      95      { dg-end-multiline-output "" } */
      96  }
      97  
      98  /* Various examples of bad type decls.  */
      99  
     100  int float bogus; /* { dg-error "two or more data types in declaration specifiers" } */
     101  /* { dg-begin-multiline-output "" }
     102   int float bogus;
     103       ^~~~~
     104      { dg-end-multiline-output "" } */
     105  
     106  long long long bogus2; /* { dg-error "'long long long' is too long for GCC" } */
     107  /* { dg-begin-multiline-output "" }
     108   long long long bogus2;
     109             ^~~~
     110      { dg-end-multiline-output "" } */
     111  
     112  long short bogus3; /* { dg-error "both 'long' and 'short' in declaration specifiers" } */
     113  /* { dg-begin-multiline-output "" }
     114   long short bogus3;
     115        ^~~~~
     116      { dg-end-multiline-output "" } */
     117  
     118  signed unsigned bogus4; /* { dg-error "both 'signed' and 'unsigned' in declaration specifiers" } */
     119  /* { dg-begin-multiline-output "" }
     120   signed unsigned bogus4;
     121          ^~~~~~~~
     122      { dg-end-multiline-output "" } */