* class.c (finish_struct_anon): Forbid nested classes.
From-SVN: r44148
This commit is contained in:
parent
69e6b1d4b2
commit
b7076960b3
3 changed files with 13 additions and 2 deletions
|
@ -1,3 +1,7 @@
|
|||
2001-07-19 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* class.c (finish_struct_anon): Forbid nested classes.
|
||||
|
||||
2001-07-19 Neil Booth <neil@daikokuya.demon.co.uk>
|
||||
|
||||
* decl2.c: Don't include dwarfout.h and dwarf2out.h.
|
||||
|
|
|
@ -3132,7 +3132,14 @@ finish_struct_anon (t)
|
|||
tree elt = TYPE_FIELDS (TREE_TYPE (field));
|
||||
for (; elt; elt = TREE_CHAIN (elt))
|
||||
{
|
||||
if (DECL_ARTIFICIAL (elt))
|
||||
/* We're generally only interested in entities the user
|
||||
declared, but we also find nested classes by noticing
|
||||
the TYPE_DECL that we create implicitly. You're
|
||||
allowed to put one anonymous union inside another,
|
||||
though, so we explicitly tolerate that. */
|
||||
if (DECL_ARTIFICIAL (elt)
|
||||
&& (!DECL_IMPLICIT_TYPEDEF_P (elt)
|
||||
|| ANON_AGGR_TYPE_P (TREE_TYPE (elt))))
|
||||
continue;
|
||||
|
||||
if (DECL_NAME (elt) == constructor_name (t))
|
||||
|
|
|
@ -8,7 +8,7 @@ public:
|
|||
private:
|
||||
union {
|
||||
float vf;
|
||||
struct ff {
|
||||
struct ff { // ERROR - nested class in anonymous union
|
||||
void *ptr;
|
||||
char *name;
|
||||
int sz;
|
||||
|
|
Loading…
Add table
Reference in a new issue