summaryrefslogtreecommitdiffstats
path: root/gcc/testsuite/g++.dg/parse
Commit message (Collapse)AuthorAgeFilesLines
...
* PR c++/27805lmillward2006-06-221-0/+11
| | | | | | | | * typeck2.c (build_m_component_ref): Use error_operand_p. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114897 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/27884mmitchel2006-06-161-0/+3
| | | | | | | | | | | | | | | | | * decl.c (have_extern_spec): Remove. (start_decl): Do not check have_extern_spec. (start_function): Likewise. * cp-tree.h (have_extern_spec): Remove. * parser.c (cp_parser_linkage_specification): Don't set have_extern_spec. (cp_parser_init_declarator): Likewise. (cp_parser_parameter_declaration): Do not treat parameters as within the scope of an unbraced linkage specification. PR c++/27884 * g++.dg/parse/linkage2.C: New test git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114727 138bc75d-0d04-0410-961f-82ee72b054a4
* * g++.dg/parse/ctor6.C, g++.dg/parse/defarg11.C,kazu2006-06-122-0/+20
| | | | | | | g++.dg/template/friend42.C, g++.dg/template/spec30.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114585 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/27819mmitchel2006-06-051-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * decl.c (cp_finish_decl): Process initializers for static data members with non-dependent initializers, even in templates. PR c++/27722 * decl.c (maybe_deduce_size_from_array_init): If the declaration is erroneous, give it an erroneous type. (layout_var_decl): If the type is erroneous, give up. (check_initializer): Likewise. PR c++/27807 * cp-tree.h (TYPE_OBJ_P): New macro. (TYPE_PTROB_P): Use it. (TYPE_REF_OBJ_P): Likewise. * semantics.c (finish_compound_literal): Do not permit compound literals of non-object types. PR c++/27806 * typeck.c (original_type): Robustify. PR c++/27819 * g++.dg/template/static25.C: New test. PR c++/27722 * g++.dg/init/array21.C: New test. PR c++/27807 * g++.dg/ext/complit7.C: New test. PR c++/27806 * g++.dg/parse/ptrmem5.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114382 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/27808mmitchel2006-05-311-0/+3
| | | | | | | | | | * parser.c (cp_parser_decl_specifier_seq): Issue errors about "friend" specifiers that do not appear in class scopes. PR c++/27808 * g++.dg/parse/friend6.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114259 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/27803mmitchel2006-05-301-0/+11
| | | | | | | | | | * class.c (check_bitfield_decl): Ensure that all bitfields have integral type. PR c++/27803 * g++.dg/parse/bitfield1.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114245 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/26068mmitchel2006-05-171-0/+11
| | | | | | | | | | | | | | * parser.c (cp_parser_set_storage_class): Check for invalid uses of storage classes on unbraced linkage specifications. (cp_parser_decl_specifier_seq): Pass keywords, not storage classes, to cp_parser_set_storage_class. PR c++/26068 * g++.dg/opt/pr17697-3.C: Remove invalid extern specifier. * g++.dg/parse/linkage1.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113869 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/27339mmitchel2006-05-161-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * cp-tree.h (perform_access_checks): New function. * semantics.c (perform_access_checks): New function. (perform_deferred_access_checks): Use it. * parser.c (cp_parser_simple_declaration): Adjust call to cp_parser_init_declarator. (cp_parser_type_parameter): Do not defer checks in default arguments. (cp_parser_explicit_specialization): Adjust call to cp_parser_single_declaration. (cp_parser_init_declarator): Perform template-parameter access checks. (cp_parser_parameter_declaration): Do not defer checks for template parameter default arguments. (cp_parser_template_declaration_after_export): Gather access checks for template parameters, and pass them to cp_parser_single_declaration. (cp_parser_template_parameter_access_checks): New function. (cp_parser_single_declaration): Add checks parameter. PR c++/27339 * g++.dg/parser/access8.C: Adjust error marker. * g++.dg/template/access17.C: New test. * g++.dg/template/access18.C: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113819 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/27309mmitchel2006-05-021-0/+14
| | | | | | | | | | | | | | | | | * class.c (add_method): Call grok_special_member_properties. * decl.c (grokdeclarator): Don't call it here. (copy_fn_p): A TEMPLATE_DECL is never a copy constructor or assignment operator. Set TYPE_HAS_CONSTURCTOR if DECL is a constructor. (start_method): Don't call grok_special_member_properties. * method.c (implicitly_declare_fn): Likewise. * pt.c (instantiate_class_template): Likewise. * decl2.c (grokfield): Likewise. PR c++/27309 * g++.dg/parser/ctor5.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113473 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/27278reichelt2006-04-301-0/+4
| | | | | | | | | | * decl.c (grok_op_properties): Skip operators with invalid args when checking for class-type or enum-type args. * g++.dg/parse/operator7.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113389 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/27279reichelt2006-04-291-0/+7
| | | | | | | | | * decl.c (copy_fn_p): Skip functions with invalid first arg. * g++.dg/parse/ctor4.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113378 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/26558reichelt2006-04-191-0/+11
| | | | | | | | | | * parser.c (cp_parser_class_name): Check for invalid typenames. Rearrange code. * g++.dg/parse/template19.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113096 138bc75d-0d04-0410-961f-82ee72b054a4
* * g++.dg/parse/dtor7.C: New test.mmitchel2006-04-113-3/+7
| | | | | | | | | | | | | | * g++.dg/parse/new1.C: Add error marker. * g++.dg/template/new3.C: New test. PR c++/26122 * g++.dg/template/pure1.C: New test. PR c++/26295 * g++.dg/parse/ptrmem4.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@112869 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/6634reichelt2006-03-151-0/+7
| | | | | | | | | | | decl.c (grokdeclarator): Do not accept long long double. Reorganize checks for invalid (combinations of) type modifiers. Quote modifiers in messages. g++.dg/parse/long1.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@112084 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/26291reichelt2006-02-221-1/+1
| | | | | | | | | | | * decl.c (grok_op_properties): Check for ellipsis in arguments of operators. * g++.dg/other/ellipsis1.C: New test. * g++.dg/parse/operator4.C: Adjust error marker. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111367 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/25552reichelt2006-01-241-0/+8
| | | | | | | | | | | | | | * parser.c (cp_parser_unqualified_id): Check that destructor name and scope match. * call.c (check_dtor_name): Do not expect a BIT_NOT_EXPR. Adjust comment. Return early if possible. Use same_type_p to compare types. * typeck.c (lookup_destructor): Adjust call to check_dtor_name. * g++.dg/parse/dtor8.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@110168 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/25895mmitchel2006-01-221-0/+4
| | | | | | | | | | | | | | | | | | | | * class.c (build_base_path): Generate a NOP_EXPR instead of a COMPONENT_REF if the base and derived classes are at the same address. PR c++/25856 * decl.c (begin_destructor_body): Robustify. PR c++/25858 * parser.c (cp_parser_direct_declarator): Robustify. PR c++/25895 * g++.dg/inherit/conv2.C: New test. PR c++/25856 * g++.dg/parse/dtor7.C: New test. PR c++/25858 * g++.dg/template/crash44.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@110084 138bc75d-0d04-0410-961f-82ee72b054a4
* * search.c (lookup_conversions_r): Fix a pasto.jakub2006-01-181-0/+26
| | | | | | | * g++.dg/parse/lookup5.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109877 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c/25682jakub2006-01-171-0/+19
| | | | | | | | | | | | | | * c-typeck.c (build_unary_op): Fold offsetof-like expressions even when the pointer is not NULL. cp/ * decl.c (compute_array_index_type): After issuing not an integral constant-expression error, set size to 1 to avoid ICEs later on. testsuite/ * gcc.dg/pr25682.c: New test. * g++.dg/parse/array-size2.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109812 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/24782mmitchel2006-01-041-0/+5
| | | | | | | | | | | * parser.c (cp_parser_nested_name_specifier_opt): Preserve access checks, even when parsing tentatively. PR c++/24782 * g++.dg/parse/access9.C: New test. * g++.dg/tc1/dr52.C: Tweak error markers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109342 138bc75d-0d04-0410-961f-82ee72b054a4
* libcpp/rth2006-01-041-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * directives.c (struct pragma_entry): Add is_deferred. Add ident entry to value union. (end_directive): Don't eat the line if in_deferred_pragma. (run_directive): Remove pragma hacks. (insert_pragma_entry): Remove. (new_pragma_entry): New. (register_pragma_1): Split out of register_pragma. Only handle the lookup tree and return the new entry. (cpp_register_pragma): Fill in the pragma entry here. (cpp_register_deferred_pragma): New. (register_pragma_internal): New. (_cpp_init_internal_pragmas): Use register_pragma_internal. (do_pragma): Allow pragma expansion after namespace. For deferred pragmas, don't slurp the line into a string. (destringize_and_run): Save tokens for deferred pragmas. (cpp_handle_deferred_pragma): Remove. * macro.c (builtin_macro): Remove pragma token hack. (_cpp_push_token_context): Rename from push_token_context and export. * internal.h (struct lexer_state): Add pragma_allow_expansion. (_cpp_push_token_context): Declare. * lex.c (_cpp_lex_token): Allow _cpp_handle_directive to return a token. Update the line number correctly if so. (_cpp_lex_direct): Emit CPP_PRAGMA_EOL tokens. (cpp_token_val_index): Return CPP_TOKEN_FLD_PRAGMA for pragmas. * include/cpplib.h (PRAGMA_EOL): New. (CPP_TOKEN_FLD_PRAGMA): New. (struct cpp_token): Add val.pragma. (struct cpp_options): Remove defer_pragmas. (cpp_handle_deferred_pragma): Remove. (cpp_register_deferred_pragma): Declare. gcc/ * c-lex.c (c_lex_with_flags) <CPP_PRAGMA>: Smuggle pragma id via integer constant. (pragma_lex): Remove. * c-pch.c (c_common_pch_pragma): Accept the name as an argument, rather than parsing it. * c-pragma.c (handle_pragma_weak, handle_pragma_redefine_extname, handle_pragma_extern_prefix): Add %< %> quotes. (registered_pragmas): New. (c_register_pragma_1): New. (c_register_pragma): Use it. (c_register_pragma_with_expansion): Likewise. (c_invoke_pragma_handler): New. (init_pragma): Use cpp_register_deferred_pragma directly for pch_preprocess. * c-pragma.h (enum pragma_kind): New. (pragma_handler): New. (c_invoke_pragma_handler): Declare. * c-common.c (c_parse_error): Pretty print CPP_PRAGMA and CPP_PRAGMA_EOL. * c-common.h (c_common_pch_pragma): Update decl. * Makefile.in (c-parser.o): Update dependencies. (GTFILES): Add c-pragma.h. * c-parser.c (struct c_token): Add pragma_kind. (struct c_parser): Add in_pragma. (c_lex_one_token): Always initialize keyword and pragma_kind. Extract data for CPP_PRAGMA. (c_parser_peek_2nd_token): Deny CPP_PRAGMA_EOL. (c_parser_consume_token): Don't allow CPP_PRAGMA unless errors. Don't allow CPP_PRAGMA_EOL if in_pragma. (c_parser_consume_pragma): New. (c_parser_skip_until_found): Stop on CPP_PRAGMA_EOL. (c_parser_skip_to_end_of_parameter): Likewise. (c_parser_skip_to_end_of_block_or_statement): Likewise. (c_parser_skip_to_pragma_eol): New. (c_parser_external_declaration): Handle CPP_PRAGMA. (c_parser_compound_statement_nostart): Likewise. (c_parser_statement_after_labels): Likewise. (c_parser_pragma): New. (pragma_lex): Likewise. (c_parser_pragma_pch_preprocess): New. (c_parser_new): Merge into ... (c_parse_file): ... here. Call c_parser_pragma_pch_preprocess. gcc/cp/ * lex.c (handle_pragma_java_exceptions): Fix whitespace. * parser.c (struct cp_token): Add pragma_kind. (eof_token): Update to match. (struct cp_lexer): Add in_pragma; rearrange next for better packing. (cp_parser_initial_pragma): New. (cp_lexer_new_main): Use it. Don't bother clearing c_lex_return_raw_strings. (cp_lexer_get_preprocessor_token): Always initialize keyword and pragma_kind fields. Handle CPP_PRAGMA. (cp_lexer_consume_token): Don't allow CPP_PRAGMA_EOL when in_pragma is set. (cp_lexer_handle_pragma): Remove. Update callers to cp_parser_pragma. (cp_lexer_print_token) <CPP_PRAGMA>: Don't print as a string. (cp_parser_skip_to_pragma_eol): New. (cp_parser_error): Use it. (cp_parser_skip_to_closing_parenthesis): Stop at CPP_PRAGMA_EOL; rearrange with switch statement. (cp_parser_skip_to_end_of_statement): Likewise. (cp_parser_skip_to_end_of_block_or_statement): Likewise. (cp_parser_skip_to_closing_brace): Likewise. (cp_parser_skip_until_found): Likewise. (cp_parser_statement): Add in_compound argument; update callers. Use it to decide how to handle pragma parsing. (cp_parser_labeled_statement): Add in_compound argument; pass it on to cp_parser_statement. (cp_parser_statement_seq_opt): Stop at CPP_PRAGMA_EOL. (cp_parser_declaration_seq_opt): Likewise. (cp_parser_parameter_declaration): Likewise. (cp_parser_member_specification_opt): Likewise. (cp_parser_function_definition_after_decl): Likewise. (cp_parser_cache_group): Handle CPP_PRAGMA/CPP_PRAGMA_EOL pairs. (cp_parser_pragma): New. (pragma_lex): New. gcc/testsuite/ * g++.dg/parse/pragma2.C: Update expected error lines. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109336 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/25635mmitchel2006-01-034-0/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * class.c (add_method): Set TYPE_HAS_CONVERSION for classes with a conversion operator. * decl.c (grokdeclarator): Do not set TYPE_HAS_CONVERSION here. PR c++/25638 * class.c (add_method): Never associate more than one destructor with a single class. PR c++/25637 * cp-tree.h (do_friend): Adjust prototype. * decl.c (grokfndecl): Make funcdef_flag a bool, not an int. (grokdeclarator): Likewise. Refine check for invalid declarations/definitions of member functions outside of their own class. * friend.c (do_friend): Make funcdef_flag a bool, not an int. PR c++/25633 * parser.c (cp_parser_mem_initializer_list): Check result of cp_parser_mem_initializer against error_mark_node, not NULL_TREE. (cp_parser_mem_initializer): Return error_mark_node for failure. PR c++/25634 * parser.c (cp_parser_template_parameter_list): Call begin_template_parm_list and end_template_parm_list here. (cp_parser_type_parameter): Not here. (cp_parser_template_declaration_after_export): Or here. (cp_parser_elaborated_type_specifier): Call cp_parser_check_template_parameters. * tree.c (build_target_expr_with_type): Use force_target_expr. PR c++/25635 * g++.dg/parse/operator6.C: New test. PR c++/25637 * g++.dg/parse/error29.C: New test. PR c++/25638 * g++.dg/parse/dtor6.C: New test. PR c++/25633 * g++.dg/parse/ctor3.C: New test. PR c++/25634 * g++.dg/template/class3.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109270 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/25294jakub2005-12-311-0/+26
| | | | | | | | | | | | * directives.c (do_pragma): If pragma line ends with multi-line block comment, end the saved deferred pragma string before that comment. Handle embedded '\0' chars on the pragma line. * gcc.dg/pragma-pack-3.c: New test. * g++.dg/parse/pragma3.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109201 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/25439mmitchel2005-12-271-1/+1
| | | | | | | | | | | | | | | | | * decl.c (grokdeclarator): Remove dead code. * ptree.c (cxx_print_xnode): Handle BASELINK. * parser.c (make_id_declarator): Add sfk parameter. (cp_parser_direct_declarator): Do not pass TYPE_DECLs to make_id_declarator. (cp_parser_declarator_id): Simplify BASELINKs here. (cp_parser_member_declaration): Adjust calls to make_id_declarator. PR c++/25439 * g++.dg/parse/crash17.C: Adjust error markers. * g++.dg/template/error20.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109079 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-12-22 Volker Reichelt <reichelt@igpm.rwth-aachen.de>reichelt2005-12-221-2/+3
| | | | | | | | | | | | | | | | | PR c++/23333 * include/cpplib.h: Add PURE_ZERO to flags for the cpp_token structure. * c-lex.c (c_lex_with_flags): Add PURE_ZERO to cpp_flags if number is a single digit '0'. * parser.c (cp_parser_pure_specifier): Check for PURE_ZERO to identify a single '0'. * g++.dg/parse/error25.C: Add more tests. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@108947 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-12-13 Petr Machata <machata@post.cz>jakub2005-12-131-0/+19
| | | | | | | | | | | | PR c++/24907 * parser.c (cp_parser_simple_declaration): Require comma at the beginning of processing second and later declarators, instead of allowing the comma at the end of each iteration. * g++.dg/parse/comma2.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@108462 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/20293mmitchel2005-11-142-4/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * cxx-pretty-print.c (pp_cxx_statement): Print qualifying scopes for namespaces. (pp_cxx_original_namespace_definition): Likewise. * name-lookup.c (ambiguous_decl): Don't issue error messages; instead return lists of ambiguous candidates. (select_decl): Handle ambiguous namespace lookups. * parser.c (cp_token): Add ambiguous_p. (cp_lexer_get_preprocessor_token): Set it. (cp_parser_diagnose_invalid_type_name): Avoid duplicate messages when a qualified name uses an invalid scope. (cp_parser_primary_expression): Print ambiguous candidates. (cp_parser_type_parameter): Adjust comment to reflect new parameter name for cp_parser_lookup_name. (cp_parser_template_argument): Likewise. (cp_parser_elaborated_type_specifier): Likewise. (cp_parser_namespace_name): Likewise. (cp_parser_class_name): Print ambiguous candidates. (cp_parser_lookup_name): Rename ambiguous_p parameter to ambiguous_decls. Use it to return a list of ambiguous candiates when a lookup is ambiguous. (cp_parser_lookup_name_simple): Adjust comment to reflect new parameter name for cp_parser_lookup_name. PR c++/20293 * g++.dg/parse/ambig4.C: New test. * g++.dg/tc1/dr101.C: Adjust error markers. * g++.dg/lookup/strong-using-2.C: Likewise. * g++.dg/lookup/ambig5.C: Likewise. * g++.dg/lookup/ambig4.C: Likewise. * g++.dg/parse/crash22.C: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@106879 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/24560mmitchel2005-11-021-0/+4
| | | | | | | | | | * parser.c (cp_parser_postfix_dot_deref_expression): Improve error message for use of overloaded functions on LHS of "." operator. PR c++/24560 * g++.dg/parse/dot1.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@106408 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/19253mmitchel2005-11-023-0/+13
| | | | | | | | | | | | | | | * parser.c (cp_parser_postfix_expression): Use cp_parser_elaborated_type_specifier to handle typename-types in functional casts. (cp_parser_enclosed_argument_list): Skip ahead to the end of the template argument list if the closing ">" is not found. PR c++/19253 * g++.dg/parse/typename8.C: Compile with -w -fpermissive. * g++.dg/parse/typename9.C: New test. * g++/dg/parse/typename10.C: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@106398 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/22153jconner2005-10-281-1/+1
| | | | | | | | | | | * cp/parser.c (cp_parser_member_declaration): Detect and handle a template specialization. * testsuite/g++.dg/template/crash38.C: New test. * testsuite/g++.dg/parse/explicit1.C: Change expected errors. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105944 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/22618mmitchel2005-10-201-0/+12
| | | | | | | | | | * search.c (accessible_p): Check access in the outermost set of template parameters. PR c++/22618 * g++.dg/parse/access8.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105682 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/21908mmitchel2005-10-191-0/+10
| | | | | | | * g++.dg/parse/error28.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105637 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/23440reichelt2005-10-171-0/+7
| | | | | | | | | | * parser.c (cp_parser_statement): If the parser reached CPP_EOF, only complain about missing statement. * g++.dg/parse/for1.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105520 138bc75d-0d04-0410-961f-82ee72b054a4
* Correct PR#mmitchel2005-10-161-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105465 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/22137mmitchel2005-10-161-0/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * cp-tree.h (QUALIFIED_NAME_IS_TEMPLATE): New macro. (check_template_keyword): New function. (finish_id_expression): Change prototoype. (finish_qualified_id_expr): Change prototype. (build_qualified_name): New function. (finish_class_member_access_expr): Change prototype. * init.c (build_offset_ref): Use build_qualified_name. * mangle.c (write_expression): Likewise. * parser.c (cp_parser_primary_expression): Remove qualifying_class parameter. Add address_p and template_arg_p. Use build_qualified_name. (cp_parser_id_expression): Default *template_p to template_keyword_p. Check for invalid uses of the template keyword. (cp_parser_postfix_expression): Eliminate special handling for qualified names. Adjust call to cp_parser_primary_expression. (cp_parser_postfix_dot_deref_expression): Adjust call to cp_parser_id_expression and finish_class_member_access_expr. (cp_parser_template_argument_list): Add comment. (cp_parser_template_argument): Adjust use of cp_parser_primary_expression. Remove call to finish_qualified_id_expr. (cp_parser_lookup_name): Use build_qualified_name. * pt.c (tsubst): Use build_qualified_name. (tsubst_qualified_id): Likewise. Adjust call to finish_qualified_id_expr. (tsubst_copy): Use build_qualified_name. (tsubst_copy_and_build): Adjusts call to finish_id_expression and finish_class_member_access_expr. * semantics.c (finish_non_static_data_member): Use build_qualified_name. (finish_qualified_id_expr): Add template_p and template_arg_p parameters. (finish_id_expression): Remove qualifiying_class parameter. Add template_p, done, address_p, and template_arg_p. Use build_qualified_name. Adjust calls to finish_class_member_acess_expr. * tree.c (build_qualified_name): New function. * typeck.c (check_template_keyword): New function. (finish_class_member_access_expr): Add template_p argument. Check for invalid uses of the template keyword. PR c++/22137 * g++.dg/parse/template18.C: New test. * g++.dg/template/nontype15.C: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105463 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/23730dje2005-10-141-0/+13
| | | | | | | * g++.dg/parse/crash32.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105389 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/22464mmitchel2005-10-131-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * semantics.c (finish_id_expression): Issue errors about uses of local variables in containing functions even in templates. PR c++/22180 * call.c (build_new_method_call): Correct pretty-printing of destructor names. * pt.c (tsubst_qualified_id): Recognize invalid uses of "~T" as an identifier. PR c++/23694 * decl.c (start_method): Return error_mark_node for errors. PR c++/23307 * pt.c (push_template_decl_real): Complain about attempts to declare template variables. PR c++/22352 * pt.c (tsubst_template_parms): Set processing_template_decl while processing the parameters. (tsubst_decl): Set processing_template_decl when substituting into a TEMPLATE_DECL. PR c++/22405 * pt.c (most_specialized_instantiation): Robustify. PR c++/22464 * g++.dg/template/crash/41.C: New test. PR c++/22180 * g++.dg/template/crash40.C: New test. PR c++/23694 * g++.dg/parse/friend5.C: New test. PR c++/23307 * g++.dg/template/crash38.C: New test. PR c++/22352 * g++.dg/template/friend38.C: New test. PR c++/22405 * g++.dg/template/crash39.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105365 138bc75d-0d04-0410-961f-82ee72b054a4
* cp:nathan2005-10-121-0/+9
| | | | | | | | | | | | | | | | PR c++/23797 * parser.c (cp_parser_functional_cast): Cope when TYPE is not a TYPE_DECL. Use dependent_type_p to check type. * pt.c (uses_template_parms_p): Use dependent_type_p for a TYPE_DECL. (type_dependent_expression_p): Assert we've not been given a TYPE_DECL. testsuite: PR c++/23797 * g++.dg/other/typename8.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105312 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/19964nathan2005-10-121-0/+9
| | | | | | | | | | | | | | | * stor-layout.c (place_field): Set DECL_FIELD_OFFSET and DECL_FIELD_BIT_OFFSET of FIELD_DECLs, even if they have an invalid type. cp: PR c++/19964 * cp/class.c (walk_subobject_offsets): Don't walk error_mark_node. testsuite: PR c++/19964 * g++.dg/parse/crash31.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105293 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/21369mmitchel2005-10-111-0/+8
| | | | | | | | | | | * parser.c (cp_parser_elaborated_type_specifier): Don't treat class types as templates if the type is not appearing as part of a type definition or declaration. PR c++/21369 * g++.dg/parse/ret-type3.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105241 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-10-08 James A. Morrison <phython@gcc.gnu.org>phython2005-10-081-0/+18
| | | | | | | | | PR c++/22172 * parser.c (cp_parser_postfix_expression) <RID_TYPENAME>: Treat nontype scopes as nondependent. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105120 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/16782mmitchel2005-09-281-0/+6
| | | | | | | | | | | | | * decl.c (grokdeclarator): Always pedwarn about overqualified member names. PR c++/16782 * g++.dg/parse/qualified4.C: New test. * g++.old-deja/g++.law/static-mem5.C: Use -w -fpermissive. * g++.old-deja/g++.mike/p8154.C: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104733 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/22147mmitchel2005-09-271-2/+2
| | | | | | | | | | | | | | | * name-lookup.c (maybe_process_template_type_declaration): Don't treat forward declarations of classes as templates just because we're processing_template_decl. * pt.c (tsubst_decl): Clear DECL_TEMPLATE_INFO for friend functions. PR c++/22147 * g++.dg/template/friend37.C: New test. * g++.dg/parse/crash28.C: Adjust error markers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104713 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/13140mmitchel2005-09-151-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | * decl.c (check_class_member_definition_namespace): New function. (grokfndecl): Use it. (grokvardecl): Likewise. (grokdecl): Improve documentation. * pt.c (check_explicit_instantiation_namespace): New function. (register_specialization): Call check_specialization_namespace when replacing an implicitly instantiated function. (check_explicit_specialization): Ensure that DECL_CONTEXT is set correctly for namespace-scope specializations. (do_decl_instantiation): Use check_explicit_instantiation_namespace. (do_type_instantiation): Likewise. PR c++/13140 * g++.dg/parse/class2.C: New test. * g++.dg/template/explicit8.C: Likewise. * g++.dg/template/spec25.C: Likewise. * testsuite/testsuite_character.h: Specialize character<> templates in __gnu_cxx, not in __gnu_test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104310 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/23839mmitchel2005-09-131-0/+14
| | | | | | | | | | | * typeck.c (cxx_mark_addressable): Only check DECL_HARD_REGISTER for VAR_DECLs. PR c++/23839 * g++.dg/parse/register1.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104225 138bc75d-0d04-0410-961f-82ee72b054a4
* PR c++/23841mmitchel2005-09-131-0/+13
| | | | | | | | | | | | * parser.c (cp_parser_primary_expression): Recognize the closing ">" of a template-argument-list after a floating-point literal as the end of a cast expression. PR c++/23841 * g++.dg/parse/template17.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104208 138bc75d-0d04-0410-961f-82ee72b054a4
* ./ian2005-09-121-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR g++/7874 * c.opt (ffriend-injection): New C++ option. * doc/invoke.texi (Option Summary): Mention -ffriend-injection. (C++ Dialect Options): Document -ffriend-injection. cp/ PR g++/7874 * cp-tree.h (struct lang_decl_flags): Add hidden_friend_p bitfield. Make dummy bitfield one bit smaller. (DECL_HIDDEN_FRIEND_P): Define. (pushdecl_maybe_friend): Declare. (pushdecl_top_level_maybe_friend): Declare. * decl.c (duplicate_decls): Add newdecl_is_friend parameter. Change prototype and all callers. Add assertion that a DECL_ARTIFICIAL FUNCTION_DECL is not DECL_HIDDEN_FRIEND_P. Set DECL_ANTICIPATED and DECL_HIDDEN_FRIEND_P in duplicated decl if appropriate. * name-lookup.c (supplement_binding): Don't ignore a DECL_HIDDEN_FRIEND_P. (pushdecl_maybe_friend): Break out contents of pushdecl. Add is_friend parameter. Set DECL_ANTICIPATED and DECL_HIDDEN_FRIEND_P for a friend function. (pushdecl): Just call pushdecl_maybe_friend. (pushdecl_with_scope): Add is_friend parameter. Change prototype and all callers. (pushdecl_namespace_level): Likewise. (push_overloaded_decl): Likewise. Check DECL_HIDDEN_FRIEND_P as well as DECL_ANTICIPATED when checking for a builtin. (do_nonmember_using_decl): Check DECL_HIDDEN_FRIEND_P as well as DECL_ANTICIPATED when checking for a builtin. (do_nonmember_using_decl): Likewise. (pushdecl_top_level_1): Add is_friend parameter. Change all callers. (pushdecl_top_level_maybe_friend): New function. (remove_hidden_names): New function. (struct arg_lookup): Add args field. (friend_of_associated_class_p): New static function. (arg_assoc_namespace): Ignore hidden functions which are not friends of an associated class of some argument. (lookup_arg_dependent): Remove hidden functions from list passed in. Initialize k.args. * name-lookup.h (remove_hidden_names): Declare. * friend.c (do_friend): Call pushdecl_maybe_friend instead of pushdecl. * call.c (add_function_candidate): Change DECL_ANTICIPATED test to an assertion, with a check for DECL_HIDDEN_FRIEND_P. (build_new_function_call): Add koenig_p parameter. Change prototype and callers. * pt.c (register_specialization): Add is_friend parameter. Change all callers. (push_template_decl_real): Change is_friend parameter to bool. Change prototype and all callers. (tsubst_friend_class): Call pushdecl_top_level_maybe_friend instead of pushdecl_top_level. testsuite/ PR g++/7874 * g++.dg/lookup/friend7.C: New test. * g++.dg/lookup/friend8.C: New test. * g++.dg/parse/defarg4.C: Add a parameter to the friend function, so that it will be found via argument dependent lookup. * g++.old-deja/g++.brendan/crash56.C: Don't expect errors for friend functions which will no longer be found. * g++.old-deja/g++.jason/friend.C: Add a parameter to the friend function g, so that it will be found via argument dependent lookup. * g++.old-deja/g++.jason/scoping15.C: Use -ffriend-injection. * g++.old-deja/g++.mike/net43.C: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104188 138bc75d-0d04-0410-961f-82ee72b054a4
* cp:nathan2005-08-241-0/+10
| | | | | | | | | | | PR c++/22454 * parser.c (cp_lexer_peek_nth_token): Relax assert. testsuite: PR c++/22454 * g++.dg/parse/crash29.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@103438 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-08-11 James A. Morrison <phython@gcc.gnu.org>phython2005-08-121-13/+0
| | | | | | | | * g++.dg/parse/pr22514.C: Move to... * g++.dg/debug/pr22514.C: here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@103016 138bc75d-0d04-0410-961f-82ee72b054a4
* cp:nathan2005-08-111-0/+14
| | | | | | | | | | | | | PR c++/23219 * name-lookup.c (pushtag): Process the template type before altering the identifier lookup fields. Remove unreachable code creating an empty stub decl. testsuite: PR c++/23219 * g++.dg/parse/crash28.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@102982 138bc75d-0d04-0410-961f-82ee72b054a4
OpenPOWER on IntegriCloud