/* Copyright (C) 2000 Free Software Foundation, Inc.  */

/* { dg-do preprocess } */

/* Tests tradcpp0 with defined.  The defined operator in traditional C
   works just the same as the defined operator in Standard C.  */

/* Source: Zack Weinberg, glibc, Neil Booth 11 Dec 2000.  */

#if defined REGPARMS
#error REGPARMS should not be defined
#endif

#define REGPARMS 1
#if !defined REGPARMS
#error REGPARMS should be defined
#endif

#define defined			/* { dg-error "defined" } */

/* No diagnostics, though you could argue there should be.  */
#if defined defined
#error defined is defined!
#endif

#define is_Z_defined defined Z

#if defined Z
#error Z is not defined
#endif

/* The behavior of "defined" when it comes from a macro expansion is
   now documented.  */
#if is_Z_defined
#error Macro expanding into defined operator test 1
#endif

#define Z

#if !defined Z
#error Z is defined
#endif

#if !is_Z_defined
#error Macro expanding into defined operator test 2
#endif

#undef is_Z_defined
#undef Z

/* Do all the tests over again with the () form of defined.  */

/* No diagnostics, though you could argue there should be.  */
#if defined(defined)
#error defined is defined!
#endif

#define is_Z_defined defined ( Z )

#if defined(Z)
#error Z is not defined
#endif

/* The behavior of "defined" when it comes from a macro expansion is
   now documented.  */
#if is_Z_defined
#error Macro expanding into defined operator test 1
#endif

#define Z

#if !defined(Z)
#error Z is defined
#endif

#if !is_Z_defined
#error Macro expanding into defined operator test 2
#endif
