Blob Blame History Raw
/* n_30.c:  Macro call. */
/*  Note:   Comma separate the arguments of function-like macro call,
        but comma between matching inner parenthesis doesn't.  This feature
        is tested on so many places in this suite especially on *.c samples
        which use assert() macro, that no separete item to test this feature
        is provided.    */

/* 30.1:    A macro call may cross the lines.   */
#define FUNC( a, b, c)      a + b + c
/*  a + b + c;  */
    FUNC
    (
        a,
        b,
        c
    )
    ;

/* { dg-do preprocess }
   { dg-final { if ![file exist n_30.i] { return }                      } }
   { dg-final { if \{ [grep n_30.i "a *\\+ *b *\\+ *c"] != ""   \} \{   } }
   { dg-final { return \}                                               } }
   { dg-final { if \{ [grep n_30.i "a *\\+ *"] != ""            \} \{   } }
   { dg-final { if \{ [grep n_30.i "b *\\+ *"] != ""            \} \{   } }
   { dg-final { if \{ [grep n_30.i "c"] != ""                   \} \{   } }
   { dg-final { return \} \} \}                                         } }
   { dg-final { fail "n_30.c: macro call on multi-line"                 } }
 */