diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2011-06-09 15:06:59 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2011-06-09 15:06:59 +0000 |
commit | 0d1d0dc8aa325982f4a07d79bce1a5b21e71d4ab (patch) | |
tree | 0bb6dc82d11dd690983bb00bc7850a6cd4bd4455 /gcc | |
parent | 547fdef870a84b90382a9de0bf4aa9e85ba1003a (diff) | |
download | gcc-0d1d0dc8aa325982f4a07d79bce1a5b21e71d4ab.zip gcc-0d1d0dc8aa325982f4a07d79bce1a5b21e71d4ab.tar.gz gcc-0d1d0dc8aa325982f4a07d79bce1a5b21e71d4ab.tar.bz2 |
re PR c++/29003 (operator name accepted in typedef)
/cp
2011-06-09 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/29003
* decl.c (grokdeclarator): Reject operator names in typedefs.
/testsuite
2011-06-09 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/29003
* g++.dg/parse/error38.C: New.
From-SVN: r174846
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/decl.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/parse/error38.C | 3 |
4 files changed, 20 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 2ffefaf..df665d1 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2011-06-09 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/29003 + * decl.c (grokdeclarator): Reject operator names in typedefs. + 2011-06-08 Jason Merrill <jason@redhat.com> PR c++/49107 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index d7da390..a7447c3 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -8441,6 +8441,13 @@ grokdeclarator (const cp_declarator *declarator, return error_mark_node; } + if (dname && IDENTIFIER_OPNAME_P (dname) + && declspecs->specs[(int)ds_typedef]) + { + error ("declaration of %qD as %<typedef%>", dname); + return error_mark_node; + } + /* Anything declared one level down from the top level must be one of the parameters of a function (because the body is at least two levels down). */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d2ebaf6..6bece57 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-06-09 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/29003 + * g++.dg/parse/error38.C: New. + 2011-06-09 Jakub Jelinek <jakub@redhat.com> PR middle-end/49308 diff --git a/gcc/testsuite/g++.dg/parse/error38.C b/gcc/testsuite/g++.dg/parse/error38.C new file mode 100644 index 0000000..63162a8 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/error38.C @@ -0,0 +1,3 @@ +// PR c++/29003 + +typedef int operator !(); // { dg-error "declaration" } |