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>
|
||||
|
||||
PR obj-c++/53441
|
||||
|
|
|
@ -18910,6 +18910,12 @@ cp_parser_member_declaration (cp_parser* parser)
|
|||
particular type), as opposed to a nested class. */
|
||||
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
|
||||
know it is an anonymous aggregate. */
|
||||
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>
|
||||
|
||||
* 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