summaryrefslogtreecommitdiff
path: root/gcc/testsuite/c-c++-common/cpp/macro-arg-count-1.c
blob: 7773c47e76520cc4a2a60311c026cfb424fa4bfa (plain)
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
/* { dg-options "-fdiagnostics-show-caret" } */

#define MACRO_1(X,Y) /* { dg-line "def_of_MACRO_1" } */
void test_1 ()
{
  MACRO_1(42); /* { dg-line "use_of_MACRO_1" } */
  /* { dg-error "macro \"MACRO_1\" requires 2 arguments, but only 1 given" "" { target *-*-* } use_of_MACRO_1 } */
  /* { dg-begin-multiline-output "" }
   MACRO_1(42);
             ^
     { dg-end-multiline-output "" } */
  /* { dg-message "-: macro .MACRO_1. defined here" "" { target *-*-* } def_of_MACRO_1 }
  /* { dg-begin-multiline-output "" }
 #define MACRO_1(X,Y)
 
     { dg-end-multiline-output "" } */
  /* { dg-error "'MACRO_1' undeclared" "" { target c } use_of_MACRO_1 }
  /* { dg-error "'MACRO_1' was not declared in this scope" "" { target c++ } use_of_MACRO_1 }

  /* { dg-begin-multiline-output "" }
   MACRO_1(42);
   ^~~~~~~
     { dg-end-multiline-output "" } */
  /* { dg-bogus "had not yet been defined" "" { target *-*-* } use_of_MACRO_1 } */
}

#define MACRO_2(X,Y) /* { dg-line "def_of_MACRO_2" } */
void test_2 ()
{
  MACRO_2(1, 2, 3); /* { dg-line "use_of_MACRO_2" } */
  /* { dg-error "macro \"MACRO_2\" passed 3 arguments, but takes just 2" "" { target *-*-* } use_of_MACRO_2 } */
  /* { dg-begin-multiline-output "" }
   MACRO_2(1, 2, 3);
                  ^
     { dg-end-multiline-output "" } */
  /* { dg-message "-: macro .MACRO_2. defined here" "" { target *-*-* } def_of_MACRO_2 }
  /* { dg-begin-multiline-output "" }
 #define MACRO_2(X,Y)
 
     { dg-end-multiline-output "" } */
  /* { dg-error "'MACRO_2' undeclared" "" { target c } use_of_MACRO_2 } */
  /* { dg-error "'MACRO_2' was not declared in this scope" "" { target c++ } use_of_MACRO_2 } */
  /* { dg-begin-multiline-output "" }
   MACRO_2(1, 2, 3);
   ^~~~~~~
     { dg-end-multiline-output "" } */
  /* { dg-bogus "had not yet been defined" "" { target *-*-* } use_of_MACRO_2 } */
}

#define MACRO_3
void test_3 ()
{
  MACRO_3 (42);
}

#define MACRO_4(X,Y)
void test_4 ()
{
  MACRO_4; /* { dg-line "use_of_MACRO_4" } */
  /* { dg-error "'MACRO_4' undeclared" "" { target c } use_of_MACRO_4 } */
  /* { dg-error "'MACRO_4' was not declared in this scope" "" { target c++ } use_of_MACRO_4 } */
  /* { dg-begin-multiline-output "" }
   MACRO_4;
   ^~~~~~~
     { dg-end-multiline-output "" } */
}