33 lines
673 B
C
33 lines
673 B
C
/* { dg-do run } */
|
|
|
|
/* Test that, when a macro expansion spills into the source file, we
|
|
expand macros we suck in from there, as the standard clearly states
|
|
they are not nested.
|
|
|
|
Submitter: Neil Booth, with minor modifications to the originals. 3
|
|
Dec 2000.
|
|
Source: PR 962 and Thomas Pornin. */
|
|
|
|
extern void abort (void);
|
|
int e = 10, f = 100;
|
|
|
|
#define e(n) 4 + n
|
|
#define X e
|
|
#define f(x) x
|
|
#define h(x) x + f
|
|
|
|
int
|
|
main ()
|
|
{
|
|
if (X(X) != 14) /* Should expand to "4 + e". */
|
|
abort ();
|
|
|
|
if (X(X(f)) != 108) /* Should expand to "4 + 4 + f". */
|
|
abort ();
|
|
|
|
if (h(e)(h(e)) != 120) /* Should expand to "e + e + f". */
|
|
abort ();
|
|
|
|
return 0;
|
|
}
|