_Pragma1.c: Update.

* gcc.dg/cpp/_Pragma1.c: Update.
        * gcc.dg/cpp/_Pragma2.c: New test.

From-SVN: r37486
This commit is contained in:
Neil Booth 2000-11-15 19:23:41 +00:00 committed by Neil Booth
parent 6213608449
commit cbc2c182d1
3 changed files with 25 additions and 9 deletions

View File

@ -1,3 +1,8 @@
2000-11-15 Neil Booth <neilb@earthling.net>
gcc.dg/cpp/_Pragma1.c: Update.
gcc.dg/cpp/_Pragma2.c: New test.
2000-11-15 Nathan Sidwell <nathan@codesourcery.com>
* g++.old-deja/g++.other/anon5.C: New test.

View File

@ -13,12 +13,10 @@ p1 /* { dg-error "poisoned" } */
_Pragma ("GCC poison p2")
p2 /* { dg-error "poisoned" } */
/* I can see no reason it cannot appear in a directive. Check we
enter the conditional. Putting the _Pragma at EOL also catches
nasties like not saving current lexer state properly. Also test
that wide strings are OK. */
#if 1 _Pragma (L"GCC poison p3")
p3 /* { dg-error "poisoned" } */
/* Don't interpret _Pragmas in directives. The standard is not clear
on this, but I think this makes most sense. */
#if 1 _Pragma (L"GCC poison p3") /* { dg-error "missing binary operator" } */
p3
#endif
#define M1 _Pragma ("GCC poison p4")
@ -29,10 +27,10 @@ p4 /* No problem; not yet poisoned. */
M1 p4 /* { dg-error "poisoned" } */
M2 (GCC poison p5) p5 /* { dg-error "poisoned" } */
/* Look, ma! These things even nest. */
/* Not interpreting _Pragma in directives means they don't nest. */
_Pragma ("_Pragma (\"GCC poison p6\") GCC poison p7")
p6 /* { dg-error "poisoned" } */
p7 /* { dg-error "poisoned" } */
p6
p7
/* Check we ignore them in false conditionals. */
#if 0

View File

@ -0,0 +1,13 @@
/* Copyright (C) 2000 Free Software Foundation, Inc. */
/* { dg-do preprocess } */
/* Don't allow directives in a _Pragma string. */
/* Contributed by Neil Booth 14 Nov 2000. */
_Pragma("#define test")
#ifdef test
#error Do not allow directives in _Pragma strings
#endif