111
|
1 /* Copyright (C) 2001 Free Software Foundation, Inc.
|
|
2 Contributed by Nathan Sidwell 8 May 2001 <nathan@codesourcery.com> */
|
|
3
|
|
4 /* Test of prohibition on directives which result from macro expansion.
|
|
5 See also direct2s.c */
|
|
6
|
|
7 /*
|
|
8 { dg-options "-ftrack-macro-expansion=0" }
|
|
9 { dg-do compile } */
|
|
10
|
|
11 #define HASH #
|
|
12 #define HASHDEFINE #define
|
|
13 #define HASHINCLUDE #include
|
|
14
|
|
15 HASH include "somerandomfile" /*{ dg-error "stray" "non-include" }*/
|
|
16 /*{ dg-bogus "No such" "don't execute non-include" { target *-*-* } .-1 }*/
|
|
17 int resync_parser_1; /*{ dg-error "parse|syntax|expected" "" { target *-*-* } .-2 }*/
|
|
18
|
|
19 HASHINCLUDE <somerandomfile> /*{ dg-error "stray|expected" "non-include 2" }*/
|
|
20 /*{ dg-bogus "No such" "don't execute non-include 2" { target *-*-* } .-1 }*/
|
|
21 int resync_parser_2;
|
|
22
|
|
23 void g1 ()
|
|
24 {
|
|
25 HASH define X 1 /* { dg-error "stray|unknown|expected" "# from macro" } */
|
|
26 int resync_parser_3;
|
|
27 }
|
|
28
|
|
29 void g2 ()
|
|
30 {
|
|
31 HASHDEFINE Y 1 /* { dg-error "stray|unknown|expected" "#define from macro" } */
|
|
32 int resync_parser_4;
|
|
33 }
|
|
34
|
|
35 #pragma GCC dependency "direct2.c"
|
|
36 #
|
|
37
|
|
38 void f ()
|
|
39 {
|
|
40 int i = X; /* { dg-error "undeclared|for each" "no macro X" } */
|
|
41 int j = Y; /* { dg-error "undeclared|for each" "no macro Y" } */
|
|
42 }
|
|
43
|
|
44 #define slashstar /##*
|
|
45 #define starslash *##/
|
|
46
|
|
47 slashstar starslash /* { dg-error "parse error|syntax error|expected" "not a comment" } */
|
|
48 /* { dg-error "does not give" "paste warning(s)" { target *-*-* } .-1 } */
|