mirror of git://gcc.gnu.org/git/gcc.git
re PR c++/32054 (Storage classes on anonymous unions in classes)
/cp 2012-05-25 Paolo Carlini <paolo.carlini@oracle.com> PR c++/32054 * parser.c (cp_parser_member_declaration): A storage class is not allowed in a declaration of an anonymous aggregate in a class scope. /testsuite 2012-05-25 Paolo Carlini <paolo.carlini@oracle.com> PR c++/32054 * g++.dg/other/anon-union3.C: New. From-SVN: r187902
This commit is contained in:
parent
d4dc840de4
commit
6d199d3c08
|
@ -1,3 +1,9 @@
|
||||||
|
2012-05-25 Paolo Carlini <paolo.carlini@oracle.com>
|
||||||
|
|
||||||
|
PR c++/32054
|
||||||
|
* parser.c (cp_parser_member_declaration): A storage class is not
|
||||||
|
allowed in a declaration of an anonymous aggregate in a class scope.
|
||||||
|
|
||||||
2012-05-24 Uros Bizjak <ubizjak@gmail.com>
|
2012-05-24 Uros Bizjak <ubizjak@gmail.com>
|
||||||
|
|
||||||
PR obj-c++/53441
|
PR obj-c++/53441
|
||||||
|
|
|
@ -18910,6 +18910,12 @@ cp_parser_member_declaration (cp_parser* parser)
|
||||||
particular type), as opposed to a nested class. */
|
particular type), as opposed to a nested class. */
|
||||||
else if (ANON_AGGR_TYPE_P (type))
|
else if (ANON_AGGR_TYPE_P (type))
|
||||||
{
|
{
|
||||||
|
/* C++11 9.5/6. */
|
||||||
|
if (decl_specifiers.storage_class != sc_none)
|
||||||
|
error_at (decl_spec_token_start->location,
|
||||||
|
"a storage class on an anonymous aggregate "
|
||||||
|
"in class scope is not allowed");
|
||||||
|
|
||||||
/* Remove constructors and such from TYPE, now that we
|
/* Remove constructors and such from TYPE, now that we
|
||||||
know it is an anonymous aggregate. */
|
know it is an anonymous aggregate. */
|
||||||
fixup_anonymous_aggr (type);
|
fixup_anonymous_aggr (type);
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2012-05-25 Paolo Carlini <paolo.carlini@oracle.com>
|
||||||
|
|
||||||
|
PR c++/32054
|
||||||
|
* g++.dg/other/anon-union3.C: New.
|
||||||
|
|
||||||
2012-05-25 Ian Lance Taylor <iant@google.com>
|
2012-05-25 Ian Lance Taylor <iant@google.com>
|
||||||
|
|
||||||
* gcc.dg/split-6.c: New test.
|
* gcc.dg/split-6.c: New test.
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
// PR c++/32054
|
||||||
|
|
||||||
|
class C
|
||||||
|
{
|
||||||
|
auto union // { dg-error "storage class" "" { target c++98 } }
|
||||||
|
{
|
||||||
|
int a;
|
||||||
|
}; // { dg-error "multiple|specified" "" { target c++11 } }
|
||||||
|
register union // { dg-error "storage class" }
|
||||||
|
{
|
||||||
|
int b;
|
||||||
|
};
|
||||||
|
static union // { dg-error "storage class" }
|
||||||
|
{
|
||||||
|
int c;
|
||||||
|
};
|
||||||
|
extern union // { dg-error "storage class" }
|
||||||
|
{
|
||||||
|
int d;
|
||||||
|
};
|
||||||
|
mutable union // { dg-error "storage class" }
|
||||||
|
{
|
||||||
|
int e;
|
||||||
|
};
|
||||||
|
};
|
Loading…
Reference in New Issue