From: Neil Booth Date: Sat, 16 Feb 2002 17:31:16 +0000 (+0000) Subject: * gcc.dg/decl-1.c: Update, new test. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7f311f637fb7a5aaf375d78c7f585bc4c43665dc;p=gcc.git * gcc.dg/decl-1.c: Update, new test. From-SVN: r49804 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6da29708d47..48bc0e15ad1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2002-02-16 Neil Booth + + * gcc.dg/decl-1.c: Update, new test. + 2002-02-15 Nathan Sidwell * g++.dg/abi/bitfield1.C: New test. diff --git a/gcc/testsuite/gcc.dg/decl-1.c b/gcc/testsuite/gcc.dg/decl-1.c index 23e490b15c5..bfbc9fb5326 100644 --- a/gcc/testsuite/gcc.dg/decl-1.c +++ b/gcc/testsuite/gcc.dg/decl-1.c @@ -2,16 +2,28 @@ Source: Neil Booth, 12 Feb 2002. - In the declaration of proc, x must be parsed as a typedef name - (6.7.5.3 p11). */ + In the declaration of proc, x must be parsed as a typedef name (C99 + 6.7.5.3 p11. Also see C89 DR #009, which was erroneously ommitted + from C99, and resubmitted as DR #249: if in a parameter + declaration, an identifier can be read as a typedef name or a + paramter name, it is read as a typedef name). */ /* { dg-do compile } */ typedef int x; +typedef int y; int proc(int (x)); /* x is a typedef, param to proc is a function. */ int proc2(int x); /* x is an identifier, param is an int. */ +/* Parameter to proc3 is unnamed, with type a function that returns + int and takes a single argument of type function with one int + parameter returning int. In particular, proc3 is not a function + that takes a parameter y that is a function with one int parameter + returning int. 8-) */ +int proc3(int (y (x))); + int main () { - return proc (proc2); /* { dg-bogus "integer from pointer" } */ + proc (proc2); /* { dg-bogus "integer from pointer" } */ + return proc3 (proc); /* { dg-bogus "incompatible pointer type" } */ }