Another test for preprocessor corner cases

From-SVN: r31558
This commit is contained in:
Zack Weinberg 2000-01-22 04:12:52 +00:00
parent 4cda35d4c9
commit 8694a43cce
1 changed files with 28 additions and 0 deletions

View File

@ -0,0 +1,28 @@
/* { dg-do compile } */
/* { dg-options "-Wwrite-strings" } */
/* The purpose of this test is to ensure that line numbers in diagnostics
are accurate after macros whose arguments contain newlines and are
substituted multiple times. The semicolons are on separate lines because
#line can only correct numbering on line boundaries. */
#define one(x) x
#define two(x) x x
#define four(x) two(x) two(x)
int
main(void)
{
char *A;
A = "text"; /* { dg-warning "discards qualifiers" "case zero" } */
A = one("text"
"text")
; /* { dg-warning "discards qualifiers" "case one" } */
A = two("text"
"text")
; /* { dg-warning "discards qualifiers" "case two" } */
A = four("text"
"text")
; /* { dg-warning "discards qualifiers" "case four" } */
return 0;
}