1 /* { dg-options "-fdiagnostics-show-caret" } */
2 
3 #define MACRO_1(X,Y) /* { dg-line "def_of_MACRO_1" } */
test_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" } */
test_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
test_3()51 void test_3 ()
52 {
53   MACRO_3 (42);
54 }
55 
56 #define MACRO_4(X,Y)
test_4()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 }
67