1  /* { dg-do compile } */
       2  /* { dg-options "-Wwrite-strings" } */ 
       3  /* The purpose of this test is to ensure that line numbers in diagnostics
       4     are accurate after macros whose arguments contain newlines and are
       5     substituted multiple times.  The semicolons are on separate lines because
       6     #line can only correct numbering on line boundaries.  */
       7  #define one(x) x
       8  #define two(x) x x
       9  #define four(x) two(x) two(x)
      10  
      11  int
      12  main(void)
      13  {
      14    char *A;
      15  
      16    A = "text";		/* { dg-warning "discards 'const' qualifier" "case zero" } */
      17    A = one("text"	/* { dg-warning "discards 'const' qualifier" "case one" } */
      18  	  "text")
      19  	;
      20    A = two("text"	/* { dg-warning "discards 'const' qualifier" "case two" } */
      21  	  "text")
      22  	;
      23    A = four("text"	/* { dg-warning "discards 'const' qualifier" "case four" } */
      24  	   "text")
      25  	;
      26  
      27    return 0;
      28  }