Blame cpp-test/test-t/n_token.C

Packit b40e2e
/* n_token.C:   special pp-token in C++ */
Packit b40e2e
Packit b40e2e
#define str( a)     xstr( a)
Packit b40e2e
#define xstr( a)    # a
Packit b40e2e
#define paste( a, b)    a ## b
Packit b40e2e
Packit b40e2e
/* token.1: '::' is a token in C++, although illegal token sequence
Packit b40e2e
    in C    */
Packit b40e2e
    /* "::";    */
Packit b40e2e
    str( paste( :, :));
Packit b40e2e
Packit b40e2e
/* token.2: 'and', 'or', 'not', etc. are tokens in C++, although in C
Packit b40e2e
    these are macros defined by <iso646.h>  */
Packit b40e2e
    /* "xor";   */
Packit b40e2e
#if 1 and 2 or not 3
Packit b40e2e
    str( xor);
Packit b40e2e
#endif
Packit b40e2e
Packit b40e2e
/* { dg-do preprocess }
Packit b40e2e
   { dg-options "-std=c++98" }
Packit b40e2e
   { dg-final { if ![file exist n_token.i] { return }                   } }
Packit b40e2e
   { dg-final { if \{ [grep n_token.i "\"::\""] != ""           \} \{   } }
Packit b40e2e
   { dg-final { if \{ [grep n_token.i "\"xor\""] != ""          \} \{   } }
Packit b40e2e
   { dg-final { return \} \}                                            } }
Packit b40e2e
   { dg-final { fail "n_token.C: C++ tokens"                            } }
Packit b40e2e
 */
Packit b40e2e