From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9036 invoked by alias); 17 Jun 2002 09:46:12 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 8968 invoked by uid 71); 17 Jun 2002 09:46:04 -0000 Resent-Date: 17 Jun 2002 09:46:04 -0000 Resent-Message-ID: <20020617094604.8967.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-To: nobody@gcc.gnu.org Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, akim@freefriends.org Received: (qmail 7359 invoked by uid 61); 17 Jun 2002 09:41:42 -0000 Message-Id: <20020617094142.7357.qmail@sources.redhat.com> Date: Mon, 17 Jun 2002 03:56:00 -0000 From: akim@freefriends.org Reply-To: akim@freefriends.org To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: c++/7051: gcc/cp/parse.y & gcc/cp/decl.h: Conflict on TYPENAME + Yacc types clashes X-SW-Source: 2002-06/txt/msg00385.txt.bz2 List-Id: >Number: 7051 >Category: c++ >Synopsis: gcc/cp/parse.y & gcc/cp/decl.h: Conflict on TYPENAME + Yacc types clashes >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Mon Jun 17 02:46:02 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Akim Demaille >Release: CVS G++ >Organization: >Environment: Debian unstable. >Description: | | The parser declares token TYPENAME and decl.h declares an enum | | including TYPENAME. Several files include both, what results in a | | dangerous clash. | | | | Given the risks, I suggest that the parser slowly moves to using the | | `tFOO' convention, so, amongst the various possible changes, I | | preferred this one: instead of token TYPENAME, using token tTYPENAME. | | If you have another preference, please tell me, I'll adjust the patch | | accordingly. | | Without this patch, expect next Bison to create a failure of the | compilation: it nows outputs the tokens as enums (when __STDC__), and | therefore, the compilation will fail (as is to be expected from id | clashes). And the second issue is a typing issue. On a rule such as foo: bar {} baz; because of the default action $$ = $1, you have to ensure %typeof (foo) == %typeof (bar), which was not the case of these rules: explicit_instantiation: [...] | SCSPEC TEMPLATE begin_explicit_instantiation typespec ';' { do_type_instantiation ($4.t, $1, 1); yyungetc (';', 1); } end_explicit_instantiation {} [...] Because %type SCSPEC. So you have to write foo: bar {} baz {}; See the messages starting at: http://gcc.gnu.org/ml/gcc-patches/2002-06/msg00852.html The attached patch fixes these issues. >How-To-Repeat: >Fix: Apply my patch. >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/gzip; name="fix-TYPENAME-conflict.patch.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="fix-TYPENAME-conflict.patch.gz" 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