OSDN Git Service

PR c++/9354
[pf3gnuchains/gcc-fork.git] / gcc / cp / ChangeLog
index b49c6da..be97c50 100644 (file)
@@ -1,3 +1,185 @@
+2003-01-22  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/9354
+       * init.c (build_new): Set the type of the new-expression, even
+       when processing_templte_decl.
+
+       PR c++/9216
+       * parser.c (cp_parser_primary_expression): Improve error message
+       for templates used in an expression context.
+
+       PR c++/8696
+       * parser.c (cp_parser_decl_specifier_seq): Commit to tentative
+       parse when encountering "typedef".
+
+2003-01-22  Nathanael Nerode  <neroden@gcc.gnu.org>
+
+       * class.c, parser.c: ANSIfy function definitions and declarations.
+
+2003-01-22  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/9328
+       * error.c (dump_decl): For an OVERLOAD, just print the name of the
+       function; it doesn't make sense to try to print its type.
+       * semantics.c (finish_typeof): Issue errors about invalid uses.
+
+       PR c++/9298
+       * parser.c (cp_parser_consume_semicolon_at_end_of_statement): New
+       function.
+       (cp_parser_expression_statement): Use it.
+       (cp_parser_explicit_instantiation): Likewise.
+       * pt.c (do_decl_instantiation): Improve error handling logic.
+       
+2003-01-22  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/9384
+       * parser.c (cp_parser_using_declaration): Issue error messages
+       about name resolution failures here.
+
+       PR c++/9388
+       * class.c (currently_open_derived_class): Use dependent_type_p.
+       * cp-tree.h (dependent_type_p): New function.
+       (dependent_template_arg_p): Likewise.
+       (dependent_template_p): Likewise.
+       (type_dependent_expression_p): Likewise.
+       * parser.c (cp_parser_dependent_type_p): Remove.
+       (cp_parser_value_dependent_type_p): Likewise.
+       (cp_parser_type_dependent_expression_p): Likewise.
+       (cp_parser_dependent_template_arg_p): Likewise.
+       (cp_parser_dependent_template_id_p): Likewise.
+       (cp_parser_dependent_template_p): Likewise.
+       (cp_parser_diagnose_invalid_type_name): Replace
+       cp_parser_dependent_type_p with dependent_type_p, etc.
+       (cp_parser_primary_expresion): Likewise.
+       (cp_parser_nested_name_specifier_opt): Likewise.
+       (cp_parser_postfix_expression): Likewise.
+       (cp_parser_unary_expression): Likewise.
+       (cp_parser_template_name): Likewise.
+       (cp_parser_class_name): Likewise.
+       (cp_parser_lookup_name): Likewise.
+       * pt.c (dependent_type_p): New function.
+       (value_dependent_expression_p): Likewise.
+       (type_dependent_expression_p): Likewise.
+       (dependent_template_arg_p): Likewise.
+       (dependent_template_id_p): Likewise.
+       (dependent_template_p): Likewise.
+       
+       PR c++/9285
+       PR c++/9294
+       * parser.c (cp_parser_simple_declaration): Return quickly when
+        encountering errors.
+
+2003-01-21  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       Make-lang.in (cp/decl.o-warn): Add -Wno-error.
+
+2003-01-17  Jason Merrill  <jason@redhat.com>
+
+       PR c++/9167, c++/9358
+       * decl.c (require_complete_types_for_parms): Also update DECL_ARG_TYPE.
+
+2003-01-17  Jason Merrill  <jason@redhat.com>
+
+       PR c++/9342
+       * call.c (build_conditional_expr): Always do lvalue-rvalue
+       conversion.
+
+2003-01-17  Mark Mitchell  <mark@codesourcery.com>
+
+       PR c++/9294
+       * cp-tree.def (BASELINK): Make it class 'x', not class 'e'.
+       * cp-tree.h (BASELINK_BINFO): Adjust.
+       (BASELINK_FUNCTIONS): Likewise.
+       (BASELINK_ACCESS_BINFO): Likewise.
+       (tree_baselink): New structure.
+       (cp_tree_node_structure_enum): Add TS_CP_BASELINK.
+       (lang_tree_node): Add baselink.
+       * decl.c (cp_tree_node_structure): Add BASELINK case.
+       * search.c (build_baselink): Adjust.
+       * tree.c (cp_walk_subtrees): Add BASELINK case.  Remove BASELINK_P
+       test from TREE_LIST case.
+
+       PR c++/9272
+       * parser.c (cp_parser_constructor_declarator_p): Do not assume
+       that a constructor cannot be declared outside of its own class.
+       
+       * parser.c (cp_parser_resolve_typename_type): If the scope cannot
+       be resolved, neither can the qualified name.
+
+       * rtti.c (get_pseudo_ti_desc): Fix thinko.
+
+2003-01-16  Jason Merrill  <jason@redhat.com>
+
+       PR c++/8564
+       * init.c (build_vec_init): Re-add maxindex parm.
+       (perform_member_init, build_aggr_init): Pass it.
+       (build_new_1): Pass it. Use an incomplete array type for full_type.
+       * typeck.c (build_modify_expr): Pass it.
+       * cp-tree.h: Adjust.
+
+2003-01-16  Jeffrey D. Oldham  <oldham@codesourcery.com>
+
+       * cp-tree.h (tsubst_copy_and_build): New declaration.
+       * pt.c (tsubst_copy): Remove 'build_expr_from_tree' from comment.
+       (tsubst_expr): Use 'tsubst_copy_and_build'.  Update initial comment.
+       (tsubst_copy_and_build): New function.
+
+2003-01-16  Mark Mitchell  <mark@codesourcery.com>
+
+       * cp-tree.h (lang_type_class): Remove is_partial_instantiation.
+       (PARTIAL_INSTANTIATION_P): Remove.
+       (IMPLICIT_TYPENAME_P): Likewise.
+       (IMPLICIT_TYPENAME_TYPE_DECL_P): Likewise.
+       (build_typename_type): Remove declaration.
+       (parmlist_is_exprlist): Likewise.
+       * decl.c (build_typename_type): Make it static, remove third
+       parameter.
+       (push_class_binding): Don't do implicit typename stuff.
+       (make_typename_type): Likewise.
+       (lookup_name_real): Likewise.
+       (grokdeclarator): Don't try to convert declarations into
+       initializations.  Don't do implicit typename stuff.
+       (parmlist_is_exprlist): Remove.
+       (xref_basetypes): Simplify.
+       * decl2.c (grokfield): Don't try to convert declarations into
+       initializations.
+       (build_anon_union_vars): Do this while processing templates, too.
+       (finish_anon_union): Likewise.
+       * error.c (dump_type): Remove implicit typename handling.
+       * parser.c (cp_parser_diagnose_invalid_type_name): New method.
+       (cp_parser_primary_expression): Correct handling of names not
+       found by unqualified name lookup in templates.
+       (cp_parser_nested_name_specifier_opt): Avoid checking dependency
+       of types when possible.
+       (cp_parser_simple_declaration): Complain intelligently about some
+       invalid declarations.
+       (cp_parser_member_declaration): Likewise.
+       (cp_parser_constructor_declarator_p): Don't check when we're in a
+       function scope.
+       * pt.c (instantiate_class_template): Remove
+       PARTIAL_INSTANTIATION_P gunk.
+       * search.c (lookup_field_r): Don't build implicit typenames.
+       (marked_pushdecls_p): Don't enter dependent base types.
+       (unmarked_pushdecls_p): Likewise.
+       * semantics.c (begin_class_definition): Remove implicit typename
+       stuff.
+
+2003-01-16  Nathan Sidwell  <nathan@codesourcery.com>
+
+       PR c++/9212
+       * parser.c (cp_parser_direct_declarator): If accepting either
+       abstract or named, the name must be an unqualified-id.
+
+2003-01-16  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * class.c (layout_virtual_bases): Avoid signed/unsigned warning.
+
+2003-01-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
+
+       * decl2.c (check_classfn): Fix uninitialized warning.
+       (build_anon_union_vars): Likewise.
+       * pt.c (tsubst_copy): Likewise.
+
 2003-01-14  Jeffrey D. Oldham  <oldham@codesourcery.com>
 
        Further conform g++'s __vmi_class_type_info to the C++ ABI