GCC now implements alias-declaration. But accepts it without trailing ';' . e.g. ---- using INT = int ---- And warn with ';' via -pedantic. e.g. ---- using INT = int; ---- output ---- $ g++ -pedantic -c -std=gnu++11 test.C test.C:1:16: warning: extra ';' [-pedantic] ----
I guess this one is rather urgent: thanks to Jon, the library already uses the new feature a lot and -pedantic warnings are not suppressed in system-headers (whether this is *really* ok, I'm not sure, but it's another issue)
I am currently testing the patchlet below. Sorry for the embarrassing bug. From: Dodji Seketeli <dodji@redhat.com> Date: Tue, 8 Nov 2011 17:21:52 +0100 Subject: [PATCH] PR c++/51027 - accepts alias-declaration without ';' gcc/cp/ * parser.c (cp_parser_alias_declaration): Require ';' at the end of declaration. gcc/testsuite * g++.dg/cpp0x/alias-decl-12.C: New test. --- gcc/cp/parser.c | 1 + gcc/testsuite/g++.dg/cpp0x/alias-decl-12.C | 3 +++ 2 files changed, 4 insertions(+), 0 deletions(-) create mode 100644 gcc/testsuite/g++.dg/cpp0x/alias-decl-12.C diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 3d35877..0f2b14b 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -14904,6 +14904,7 @@ cp_parser_alias_declaration (cp_parser* parser) cp_parser_require (parser, CPP_EQ, RT_EQ); type = cp_parser_type_id (parser); + cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON); /* A typedef-name can also be introduced by an alias-declaration. The identifier following the using keyword becomes a typedef-name. It has diff --git a/gcc/testsuite/g++.dg/cpp0x/alias-decl-12.C b/gcc/testsuite/g++.dg/cpp0x/alias-decl-12.C new file mode 100644 index 0000000..a8c7260 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/alias-decl-12.C @@ -0,0 +1,3 @@ +// { dg-options "-std=c++0x" } + +using INT = int // { dg-error "expected|;|at end of input" } -- 1.7.6.4
A candidate fix was posted to http://gcc.gnu.org/ml/gcc-patches/2011-11/msg01252.html
Author: dodji Date: Wed Nov 9 08:00:58 2011 New Revision: 181195 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=181195 Log: PR c++/51027 - accepts alias-declaration without ';' gcc/cp/ * parser.c (cp_parser_alias_declaration): Require ';' at the end of the declaration. libstdc++-v3/ * include/ext/pointer.h (rebind): Append missing ';'. gcc/testsuite * g++.dg/cpp0x/alias-decl-12.C: New test. * g++.dg/ext/alias-decl-attr4.C: Append missing ';'. Added: trunk/gcc/testsuite/g++.dg/cpp0x/alias-decl-12.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/parser.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/g++.dg/ext/alias-decl-attr4.C trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/ext/pointer.h
Should be fixed in trunk now.
*** Bug 51120 has been marked as a duplicate of this bug. ***