| /* Copyright (C) 2001, 2003 Free Software Foundation, Inc. */ |
| |
| /* { dg-do preprocess } */ |
| |
| /* This tests that we avoid accidental pasting, as well as gratuitous |
| space insertion, in various nasty places _inside_ a macro's |
| replacement list: on either side of a paste, and on either side of |
| an argument. It also tests that we don't pass empty macro leading |
| whitespace to the next line - this problem use to break Emacs |
| preprocessor abuse. |
| |
| Neil Booth, 1 Feb 2001. */ |
| |
| #define EMPTY_WITH_LEADING_SPACE |
| #define f(x, y) :x: -y##> -##y> |
| #define g(x, y) :x: :y##2 2##y: |
| |
| /* This should preprocess as |
| |
| : : : - > - > |
| :2: :22 22: |
| |
| We used to get a space at the start of the line. */ |
| |
| EMPTY_WITH_LEADING_SPACE |
| f(:,) |
| g(2, 2) |
| |
| /* { dg-final { scan-file avoidpaste2.i "(^|\\n): : : - > - >" } } |
| { dg-final { scan-file avoidpaste2.i "(^|\\n):2: :22 22:" } } */ |