aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDodji Seketeli <dodji@redhat.com>2011-11-09 08:00:58 +0000
committerDodji Seketeli <dodji@gcc.gnu.org>2011-11-09 09:00:58 +0100
commitbd0424fa93a378febead635136ad219f9d34b2b7 (patch)
treeb383aaeeb1c561448687abde05efb6e54f000de6 /gcc
parentc2b32b0fd4ae32ae049e166d03ba7678aa07ddab (diff)
downloadgcc-bd0424fa93a378febead635136ad219f9d34b2b7.zip
gcc-bd0424fa93a378febead635136ad219f9d34b2b7.tar.gz
gcc-bd0424fa93a378febead635136ad219f9d34b2b7.tar.bz2
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 ';'. From-SVN: r181195
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/parser.c1
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/alias-decl-12.C4
-rw-r--r--gcc/testsuite/g++.dg/ext/alias-decl-attr4.C2
5 files changed, 18 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 6445bef..f7f91d2 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,11 @@
2011-11-09 Dodji Seketeli <dodji@redhat.com>
+ PR c++/51027
+ * parser.c (cp_parser_alias_declaration): Require ';' at the end
+ of the declaration.
+
+2011-11-09 Dodji Seketeli <dodji@redhat.com>
+
PR debug/51032
* decl2.c (check_member_template): Accept alias templates and ...
* parser.c (cp_parser_alias_declaration): ... use it here.
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index fde4c6d..1376a3a 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -14942,6 +14942,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/ChangeLog b/gcc/testsuite/ChangeLog
index 4abcf07..7b59aeb 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,11 @@
2011-11-09 Dodji Seketeli <dodji@redhat.com>
+ PR c++/51027
+ * g++.dg/cpp0x/alias-decl-12.C: New test.
+ * g++.dg/ext/alias-decl-attr4.C: Append missing ';'.
+
+2011-11-09 Dodji Seketeli <dodji@redhat.com>
+
PR debug/51032
* g++.dg/cpp0x/alias-decl-debug-0.C: New test.
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..11c2686
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/alias-decl-12.C
@@ -0,0 +1,4 @@
+// Origin: PR c++/51027
+// { dg-options "-std=c++0x" }
+
+using INT = int // { dg-error "expected|;|at end of input" }
diff --git a/gcc/testsuite/g++.dg/ext/alias-decl-attr4.C b/gcc/testsuite/g++.dg/ext/alias-decl-attr4.C
index c4dd048..3e1c1c4 100644
--- a/gcc/testsuite/g++.dg/ext/alias-decl-attr4.C
+++ b/gcc/testsuite/g++.dg/ext/alias-decl-attr4.C
@@ -11,7 +11,7 @@ template <class T> struct A
template < typename Val > struct S
{
using vector_type __attribute__((vector_size(16))) =
- typename A<Val>::type
+ typename A<Val>::type;
typedef Val vector_type2 __attribute__((vector_size(16)));
int pr_size() { return sizeof(vector_type); }
int pr_size2() { return sizeof(vector_type2); }