diff gcc/testsuite/gcc.dg/cpp/macro10.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/gcc.dg/cpp/macro10.c	Fri Oct 27 22:46:09 2017 +0900
@@ -0,0 +1,25 @@
+/* Copyright (C) 2001 Free Software Foundation, Inc.  */
+
+/* { dg-do preprocess } */
+
+/* Source: Neil Booth, 23 Sep 2001.
+
+   A tricky, pathological corner case we used to get wrong.  Expansion
+   should go as follows.  The asterisk indicates the token has "blue
+   paint" can no longer be macro expanded.  We used to lose that
+   information when parsing arguments and dropping to the lexer to get
+   the ')'.
+
+   foo )
+   bar foo* )
+   func (foo* )
+   foo*   
+
+   If we try and expand the final foo, we get an "unterminated
+   argument list invoking macro <func>" error.  If we do the right
+   thing and leave it as is, no diagnostics are emitted.  */
+
+#define func(x) x
+#define bar func(
+#define foo bar foo
+foo )