re PR c++/53995 (Overload resolution fails with enum argument, says <anonymous enum>)

PR c++/53995
	* decl.c (finish_enum_value_list): Only call
	insert_late_enum_def_into_classtype_sorted_fields in class scope.

From-SVN: r189599
This commit is contained in:
Jason Merrill 2012-07-17 22:48:17 -04:00 committed by Jason Merrill
parent 2947332637
commit 383e40fa3e
4 changed files with 25 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2012-07-17 Jason Merrill <jason@redhat.com>
PR c++/53995
* decl.c (finish_enum_value_list): Only call
insert_late_enum_def_into_classtype_sorted_fields in class scope.
2012-07-17 Jason Merrill <jason@redhat.com>
PR c++/53989

View File

@ -12347,7 +12347,7 @@ finish_enum_value_list (tree enumtype)
for (t = TYPE_MAIN_VARIANT (enumtype); t; t = TYPE_NEXT_VARIANT (t))
TYPE_VALUES (t) = TYPE_VALUES (enumtype);
if (current_class_type
if (at_class_scope_p ()
&& COMPLETE_TYPE_P (current_class_type)
&& UNSCOPED_ENUM_P (enumtype))
insert_late_enum_def_into_classtype_sorted_fields (enumtype,

View File

@ -1,3 +1,8 @@
2012-07-17 Jason Merrill <jason@redhat.com>
PR c++/53995
* g++.dg/parse/enum9.C: New.
2012-07-17 Jason Merrill <jason@redhat.com>
PR c++/53989

View File

@ -0,0 +1,13 @@
// PR c++/53995
enum E1 { e };
void f(E1);
struct A {
int i1,i2,i3,i4,i5,i6,i7,i8,i9,i10;
void g();
void h();
};
void A::g() { enum E2 { e }; }
void A::h() { f(e); }