1  /* { dg-options "-fdiagnostics-show-caret" } */
       2  
       3  #define MACRO_1(X,Y) /* { dg-line "def_of_MACRO_1" } */
       4  void test_1 ()
       5  {
       6    MACRO_1(42); /* { dg-line "use_of_MACRO_1" } */
       7    /* { dg-error "macro \"MACRO_1\" requires 2 arguments, but only 1 given" "" { target *-*-* } use_of_MACRO_1 } */
       8    /* { dg-begin-multiline-output "" }
       9     MACRO_1(42);
      10               ^
      11       { dg-end-multiline-output "" } */
      12    /* { dg-message "-: macro .MACRO_1. defined here" "" { target *-*-* } def_of_MACRO_1 }
      13    /* { dg-begin-multiline-output "" }
      14   #define MACRO_1(X,Y)
      15   
      16       { dg-end-multiline-output "" } */
      17    /* { dg-error "'MACRO_1' undeclared" "" { target c } use_of_MACRO_1 }
      18    /* { dg-error "'MACRO_1' was not declared in this scope" "" { target c++ } use_of_MACRO_1 }
      19  
      20    /* { dg-begin-multiline-output "" }
      21     MACRO_1(42);
      22     ^~~~~~~
      23       { dg-end-multiline-output "" } */
      24    /* { dg-bogus "had not yet been defined" "" { target *-*-* } use_of_MACRO_1 } */
      25  }
      26  
      27  #define MACRO_2(X,Y) /* { dg-line "def_of_MACRO_2" } */
      28  void test_2 ()
      29  {
      30    MACRO_2(1, 2, 3); /* { dg-line "use_of_MACRO_2" } */
      31    /* { dg-error "macro \"MACRO_2\" passed 3 arguments, but takes just 2" "" { target *-*-* } use_of_MACRO_2 } */
      32    /* { dg-begin-multiline-output "" }
      33     MACRO_2(1, 2, 3);
      34                    ^
      35       { dg-end-multiline-output "" } */
      36    /* { dg-message "-: macro .MACRO_2. defined here" "" { target *-*-* } def_of_MACRO_2 }
      37    /* { dg-begin-multiline-output "" }
      38   #define MACRO_2(X,Y)
      39   
      40       { dg-end-multiline-output "" } */
      41    /* { dg-error "'MACRO_2' undeclared" "" { target c } use_of_MACRO_2 } */
      42    /* { dg-error "'MACRO_2' was not declared in this scope" "" { target c++ } use_of_MACRO_2 } */
      43    /* { dg-begin-multiline-output "" }
      44     MACRO_2(1, 2, 3);
      45     ^~~~~~~
      46       { dg-end-multiline-output "" } */
      47    /* { dg-bogus "had not yet been defined" "" { target *-*-* } use_of_MACRO_2 } */
      48  }
      49  
      50  #define MACRO_3
      51  void test_3 ()
      52  {
      53    MACRO_3 (42);
      54  }
      55  
      56  #define MACRO_4(X,Y)
      57  void test_4 ()
      58  {
      59    MACRO_4; /* { dg-line "use_of_MACRO_4" } */
      60    /* { dg-error "'MACRO_4' undeclared" "" { target c } use_of_MACRO_4 } */
      61    /* { dg-error "'MACRO_4' was not declared in this scope" "" { target c++ } use_of_MACRO_4 } */
      62    /* { dg-begin-multiline-output "" }
      63     MACRO_4;
      64     ^~~~~~~
      65       { dg-end-multiline-output "" } */
      66  }