From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20665 invoked by alias); 19 Apr 2006 16:58:36 -0000 Received: (qmail 20600 invoked by alias); 19 Apr 2006 16:58:32 -0000 Date: Wed, 19 Apr 2006 16:58:00 -0000 Message-ID: <20060419165832.20599.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug c++/27102] [4.0/4.1/4.2 regression] ICE with invalid class name in function template In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "mmitchel at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2006-04/txt/msg01559.txt.bz2 List-Id: ------- Comment #7 from mmitchel at gcc dot gnu dot org 2006-04-19 16:58 ------- Subject: Bug 27102 Author: mmitchel Date: Wed Apr 19 16:58:23 2006 New Revision: 113081 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=113081 Log: PR c++/27102 * class.c (currently_open_class): Tidy. * decl.c (grokdeclarator): If we encounter an erroneous declarator, assume that we have already issued an error message and return. Return error_mark_node instead of NULL_TREE in more places. Issue errors about function definitions that do not have a function declarator. Check for complete types for all function definitions. * cp-tree.h (cp_error_declarator): Remove. (currently_open_class): Change return type. * parser.c (cp_parser_id_expression): Add optional_p parameter. (cp_parser_parse_diagnose_invalid_type_name): Adjust calls. (cp_parser_id_expression): Likewise. (cp_parser_unqualified_id): If the name is optional, return NULL_TREE. (cp_parser_postfix_dot_deref_expression): Adjust calls. (cp_parser_type_parameter): Likewise. (cp_parser_unqualified_id): Likewise. (cp_parser_direct_declarator): Likewise. (cp_parser_declarator_id): Add optional_p parameter. (cp_parser_function_definition_from_specifiers_and_declarator): Assume that start_function indicates failure only if it has issued an error. (cp_parser_omp_var_list_no_open): Adjust calls. PR c++/27102 * g++.dg/template/crash35.C: Tweak error markers. * g++.dg/template/crash46.C: New test. * g++.old-deja/g++.brendan/friend4.C: Tweak error markers. * g++.old-deja/g++.pt/incomplete1.C: Likewise. Added: trunk/gcc/testsuite/g++.dg/template/crash46.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/class.c trunk/gcc/cp/cp-tree.h trunk/gcc/cp/decl.c trunk/gcc/cp/parser.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/g++.dg/template/crash35.C trunk/gcc/testsuite/g++.old-deja/g++.brendan/friend4.C trunk/gcc/testsuite/g++.old-deja/g++.pt/incomplete1.C -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27102