This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [C++0x] implementing forward declarations for enums
> This looks good to me, it just needs a ChangeLog entry.
Great!
I've just written the changelog. This is by far my largest patch so it
is also my largest changelog, but I hope it is ok.
Best regards.
Rodrigo
--
gcc
2010-10-25 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
Implement opaque-enum-specifiesr for C++0x
* tree.h (ENUM_IS_OPAQUE): New.
* dwarf2out.c (gen_enumeration_type_die): Use ENUM_IS_OPAQUE.
gcc/cp
2010-10-25 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
Implement opaque-enum-specifiers for C++0x
* cp-tree.h (SET_OPAQUE_ENUM_P): New.
(OPAQUE_ENUM_P): New.
(ENUM_FIXED_UNDERLYING_TYPE_P): New.
(start_enum): Update prototype.
(finish_enum_value_list): New prototype.
* parser.c (cp_parser_elaborated_type_specifier): Issue a pedwarn if
"enum class" is used in an elaborated-type-specifier.
(cp_parser_enum_specifier): Rewrite to parse opaque-enum-specifiers.
* decl.c (copy_type_enum): New.
(finish_enum_value_list): New, with code from finish_enum.
(finish_enum): A lot of code removed. Added a gcc_assert.
(start_enum): Add parameters enumtype and is_new.
Rewrite to work with opaque-enum-specifiers.
* pt.c (maybe_process_partial_specialization): Allow for template
specialization of enumerations, with a pedwarn.
(lookup_template_class): Update call to start_enum. Call to
SET_OPAQUE_ENUM_P.
(tsubst_enum): Call to begin_scope, finish_scope and
finish_enum_value_list.
gcc/testsuite
2010-10-25 Rodrigo Rivas Costa <rodrigorivascosta@gmail.com>
Implement opaque-enum-specifiers for C++0x
* g++.dg/cpp0x/forw_enum1.C: New.
* g++.dg/cpp0x/forw_enum2.C: New.
* g++.dg/cpp0x/forw_enum3.C: New.
* g++.dg/cpp0x/forw_enum4.C: New.
* g++.dg/cpp0x/forw_enum5.C: New.
* g++.dg/cpp0x/forw_enum6.C: New.
* g++.dg/cpp0x/forw_enum7.C: New.
* g++.dg/cpp0x/forw_enum8.C: New.
* g++.dg/cpp0x/forw_enum9.C: New.
* g++.dg/parse/enum3.C: Add new errors.
* g++.dg/cpp0x/scoped_enum.C: Avoid unwanted warning.
* g++.dg/cpp0x/auto9.C: Add new error.
* g++.dg/template/crash79.C: Add new errors.