diff options
author | Giovanni Funchal <gafunchal@gmail.com> | 2011-01-15 14:41:09 +0000 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2011-01-15 14:41:09 +0000 |
commit | 620437f2d4773ab2b42f4edebbd949577788ca86 (patch) | |
tree | 50462912055d7c3cfcbce570d96c9ec73a11b9e6 /gcc | |
parent | 050d1a59d1568b0dc701a5a48409c847e26d4ee1 (diff) | |
download | gcc-620437f2d4773ab2b42f4edebbd949577788ca86.zip gcc-620437f2d4773ab2b42f4edebbd949577788ca86.tar.gz gcc-620437f2d4773ab2b42f4edebbd949577788ca86.tar.bz2 |
re PR c++/33558 ('mutable' incorrectly accepted on reference members)
2011-01-15 Giovanni Funchal <gafunchal@gmail.com>
Jonathan Wakely <jwakely.gcc@gmail.com>
PR c++/33558
* decl.c (grokdeclarator): Reject mutable reference members.
Co-Authored-By: Jonathan Wakely <jwakely.gcc@gmail.com>
From-SVN: r168843
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/decl.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/other/pr33558-2.C | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/other/pr33558.C | 5 |
5 files changed, 30 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 22f5bf0..e7b45b4 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2011-01-15 Giovanni Funchal <gafunchal@gmail.com> + Jonathan Wakely <jwakely.gcc@gmail.com> + + PR c++/33558 + * decl.c (grokdeclarator): Reject mutable reference members. + 2011-01-14 Jason Merrill <jason@redhat.com> PR c++/47289 diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index f7bf1bf..6a13cc4 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -9214,6 +9214,12 @@ grokdeclarator (const cp_declarator *declarator, error ("const %qs cannot be declared %<mutable%>", name); storage_class = sc_none; } + else if (TREE_CODE (type) == REFERENCE_TYPE) + { + permerror (input_location, "reference %qs cannot be declared " + "%<mutable%>", name); + storage_class = sc_none; + } } /* If this is declaring a typedef name, return a TYPE_DECL. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b1d5a5f..b30e532 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2011-01-15 Giovanni Funchal <gafunchal@gmail.com> + Jonathan Wakely <jwakely.gcc@gmail.com> + + PR c++/33558 + * g++.dg/other/pr33558.C: New. + * g++.dg/other/pr33558-2.C: New. + 2011-01-14 Martin Jambor <mjambor@suse.cz> PR tree-optimization/45934 diff --git a/gcc/testsuite/g++.dg/other/pr33558-2.C b/gcc/testsuite/g++.dg/other/pr33558-2.C new file mode 100644 index 0000000..a8df840 --- /dev/null +++ b/gcc/testsuite/g++.dg/other/pr33558-2.C @@ -0,0 +1,6 @@ +/* { dg-do compile } */ +/* { dg-options "-fpermissive" } */ + +class X { + mutable int &q; /* { dg-warning "cannot be declared 'mutable'" } */ +}; diff --git a/gcc/testsuite/g++.dg/other/pr33558.C b/gcc/testsuite/g++.dg/other/pr33558.C new file mode 100644 index 0000000..1a340af --- /dev/null +++ b/gcc/testsuite/g++.dg/other/pr33558.C @@ -0,0 +1,5 @@ +/* { dg-do compile } */ + +class X { + mutable int &q; /* { dg-error "cannot be declared 'mutable'" } */ +}; |