]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[multiple changes]
authorMatthias Klose <doko@debian.org>
Mon, 21 Oct 2002 18:38:39 +0000 (18:38 +0000)
committerMatthias Klose <doko@gcc.gnu.org>
Mon, 21 Oct 2002 18:38:39 +0000 (18:38 +0000)
2002-10-21  Matthias Klose  <doko@debian.org>

        * Backport, without whitespace change:
        2002-06-19 Akim Demaille  <akim@epita.fr>
        * parse.y (TYPENAME): Rename as tTYPENAME to avoid the clash with
        decl.h's TYPENAME.
        * spew.c, lex.c: Adjust.
        * parse.y (explicit_instantiation): Add empty action to override
        the default $$ = $1 where it introduces a type clash.

From-SVN: r58372

gcc/cp/ChangeLog
gcc/cp/lex.c
gcc/cp/parse.y
gcc/cp/spew.c

index 8739a34bd07b5934f91c17441f65854f90884523..cf4c854637d4e07401e190e61733783ab0f1787e 100644 (file)
@@ -1,3 +1,13 @@
+2002-10-21  Matthias Klose  <doko@debian.org>
+
+       * Backport, without whitespace change:
+       2002-06-19 Akim Demaille  <akim@epita.fr>
+       * parse.y (TYPENAME): Rename as tTYPENAME to avoid the clash with
+       decl.h's TYPENAME.
+       * spew.c, lex.c: Adjust.
+       * parse.y (explicit_instantiation): Add empty action to override
+       the default $$ = $1 where it introduces a type clash.
+
 2002-10-21  Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/8218
index f3d80f8b1acb0597ff6ba3343cc75454501f5b18..c40469c6c501ab1f51575818e18ec3cd9f1f50b8 100644 (file)
@@ -90,10 +90,11 @@ extern YYSTYPE yylval;              /*  the semantic value of the           */
 int warn_traditional = 0;
 int flag_digraphs = 1;
 
-/* the declaration found for the last IDENTIFIER token read in.
-   yylex must look this up to detect typedefs, which get token type TYPENAME,
-   so it is left around in case the identifier is not a typedef but is
-   used in a context which makes it a reference to a variable.  */
+/* the declaration found for the last IDENTIFIER token read in.  yylex
+   must look this up to detect typedefs, which get token type
+   tTYPENAME, so it is left around in case the identifier is not a
+   typedef but is used in a context which makes it a reference to a
+   variable.  */
 tree lastiddecl;
 
 /* Array for holding counts of the numbers of tokens seen.  */
@@ -739,7 +740,7 @@ yyprint (file, yychar, yylval)
   switch (yychar)
     {
     case IDENTIFIER:
-    case TYPENAME:
+    case tTYPENAME:
     case TYPESPEC:
     case PTYPENAME:
     case PFUNCNAME:
@@ -977,7 +978,7 @@ check_for_missing_semicolon (type)
   if ((yychar > 255
        && yychar != SCSPEC
        && yychar != IDENTIFIER
-       && yychar != TYPENAME
+       && yychar != tTYPENAME
        && yychar != CV_QUALIFIER
        && yychar != SELFNAME)
       || yychar == 0  /* EOF */)
index 6dadc32d494eb88f9b237304538d15ea9cb4ed8e..5328ed3a5883cd2e58f10be1958e79fa1b92d23c 100644 (file)
@@ -253,7 +253,7 @@ cp_parse_init ()
 /* All identifiers that are declared typedefs in the current block.
    In some contexts, they are treated just like IDENTIFIER,
    but they can also serve as typespecs in declarations.  */
-%token TYPENAME
+%token tTYPENAME
 %token SELFNAME
 
 /* A template function.  */
@@ -315,7 +315,7 @@ cp_parse_init ()
 %nonassoc IF
 %nonassoc ELSE
 
-%left IDENTIFIER PFUNCNAME TYPENAME SELFNAME PTYPENAME SCSPEC TYPESPEC CV_QUALIFIER ENUM AGGR ELLIPSIS TYPEOF SIGOF OPERATOR NSNAME TYPENAME_KEYWORD ATTRIBUTE
+%left IDENTIFIER PFUNCNAME tTYPENAME SELFNAME PTYPENAME SCSPEC TYPESPEC CV_QUALIFIER ENUM AGGR ELLIPSIS TYPEOF SIGOF OPERATOR NSNAME TYPENAME_KEYWORD ATTRIBUTE
 
 %left '{' ',' ';'
 
@@ -345,7 +345,7 @@ cp_parse_init ()
 
 %type <code> unop
 
-%type <ttype> identifier IDENTIFIER TYPENAME CONSTANT expr nonnull_exprlist
+%type <ttype> identifier IDENTIFIER tTYPENAME CONSTANT expr nonnull_exprlist
 %type <ttype> PFUNCNAME maybe_identifier
 %type <ttype> paren_expr_or_null nontrivial_exprlist SELFNAME
 %type <ttype> expr_no_commas expr_no_comma_rangle
@@ -994,7 +994,7 @@ member_init:
 
 identifier:
          IDENTIFIER
-       | TYPENAME
+       | tTYPENAME
        | SELFNAME
        | PTYPENAME
        | NSNAME
@@ -1031,17 +1031,21 @@ explicit_instantiation:
                { do_type_instantiation ($4.t, $1, 1);
                  yyungetc (';', 1); }
           end_explicit_instantiation
+               {}
        | SCSPEC TEMPLATE begin_explicit_instantiation typed_declspecs 
           declarator
                { tree specs = strip_attrs ($4.t);
                  do_decl_instantiation (specs, $5, $1); }
           end_explicit_instantiation
+               {}
        | SCSPEC TEMPLATE begin_explicit_instantiation notype_declarator
                { do_decl_instantiation (NULL_TREE, $4, $1); }
           end_explicit_instantiation
+               {}
        | SCSPEC TEMPLATE begin_explicit_instantiation constructor_declarator
                { do_decl_instantiation (NULL_TREE, $4, $1); }
           end_explicit_instantiation
+               {}
        ;
 
 begin_explicit_instantiation: 
@@ -1060,7 +1064,7 @@ template_type:
          PTYPENAME '<' template_arg_list_opt template_close_bracket
            .finish_template_type
                 { $$ = $5; }
-       | TYPENAME  '<' template_arg_list_opt template_close_bracket
+       | tTYPENAME  '<' template_arg_list_opt template_close_bracket
            .finish_template_type
                 { $$ = $5; }
        | self_template_type
@@ -1532,7 +1536,7 @@ object_template_id:
 
 unqualified_id:
          notype_unqualified_id
-       | TYPENAME
+       | tTYPENAME
        | SELFNAME
        ;
 
@@ -2767,7 +2771,7 @@ after_type_component_declarator0:
          after_type_declarator maybeasm maybe_attribute maybe_init
                { $$ = parse_field0 ($1, $<ftype>0.t, $<ftype>0.lookups,
                                     $3, $2, $4); }
-       | TYPENAME ':' expr_no_commas maybe_attribute
+       | tTYPENAME ':' expr_no_commas maybe_attribute
                { $$ = parse_bitfield0 ($1, $<ftype>0.t, $<ftype>0.lookups,
                                        $4, $3); }
        ;
@@ -2790,7 +2794,7 @@ notype_component_declarator0:
 after_type_component_declarator:
          after_type_declarator maybeasm maybe_attribute maybe_init
                { $$ = parse_field ($1, $3, $2, $4); }
-       | TYPENAME ':' expr_no_commas maybe_attribute
+       | tTYPENAME ':' expr_no_commas maybe_attribute
                { $$ = parse_bitfield ($1, $4, $3); }
        ;
 
@@ -3062,7 +3066,7 @@ functional_cast:
        ;
 
 type_name:
-         TYPENAME
+         tTYPENAME
        | SELFNAME
        | template_type  %prec EMPTY
        ;
@@ -3086,7 +3090,7 @@ nested_name_specifier:
 /* Why the @#$%^& do type_name and notype_identifier need to be expanded
    inline here?!?  (jason) */
 nested_name_specifier_1:
-         TYPENAME SCOPE
+         tTYPENAME SCOPE
                {
                  if (TREE_CODE ($1) == IDENTIFIER_NODE)
                    {
@@ -3172,7 +3176,7 @@ typename_sub1:
 /* This needs to return a TYPE_DECL for simple names so that we don't
    forget what name was used.  */
 typename_sub2:
-         TYPENAME SCOPE
+         tTYPENAME SCOPE
                {
                  if (TREE_CODE ($1) != TYPE_DECL)
                    $$ = lastiddecl;
@@ -3610,7 +3614,7 @@ label_colon:
                 { finish_label_stmt ($1); }
        | PTYPENAME ':'
                 { finish_label_stmt ($1); }
-       | TYPENAME ':'
+       | tTYPENAME ':'
                 { finish_label_stmt ($1); }
        | SELFNAME ':'
                 { finish_label_stmt ($1); }
index 212dada088c2c2254a5c48639c47723b64333bd3..33fa441d4c62c07c7e1672e24ed1a9e3bdaf7705 100644 (file)
@@ -141,10 +141,11 @@ static enum cpp_ttype last_token;
 static tree last_token_id;
 
 /* From lex.c: */
-/* the declaration found for the last IDENTIFIER token read in.
-   yylex must look this up to detect typedefs, which get token type TYPENAME,
-   so it is left around in case the identifier is not a typedef but is
-   used in a context which makes it a reference to a variable.  */
+/* the declaration found for the last IDENTIFIER token read in.  yylex
+   must look this up to detect typedefs, which get token type
+   tTYPENAME, so it is left around in case the identifier is not a
+   typedef but is used in a context which makes it a reference to a
+   variable.  */
 extern tree lastiddecl;                /* let our brains leak out here too */
 extern int     yychar;         /*  the lookahead symbol                */
 extern YYSTYPE yylval;         /*  the semantic value of the           */
@@ -628,11 +629,11 @@ identifier_type (decl)
   if (t && t == decl)
     return SELFNAME;
 
-  return TYPENAME;
+  return tTYPENAME;
 }
 
 /* token[0] == AGGR (struct/union/enum)
-   Thus, token[1] is either a TYPENAME or a TYPENAME_DEFN.
+   Thus, token[1] is either a tTYPENAME or a TYPENAME_DEFN.
    If token[2] == '{' or ':' then it's TYPENAME_DEFN.
    It's also a definition if it's a forward declaration (as in 'struct Foo;')
    which we can tell if token[2] == ';' *and* token[-1] != FRIEND or NEW.  */
@@ -644,7 +645,7 @@ do_aggr ()
   
   scan_tokens (2);
   yc1 = nth_token (1)->yychar;
-  if (yc1 != TYPENAME && yc1 != IDENTIFIER && yc1 != PTYPENAME)
+  if (yc1 != tTYPENAME && yc1 != IDENTIFIER && yc1 != PTYPENAME)
     return;
   yc2 = nth_token (2)->yychar;
   if (yc2 == ';')
@@ -659,7 +660,7 @@ do_aggr ()
 
   switch (yc1)
     {
-    case TYPENAME:
+    case tTYPENAME:
       nth_token (1)->yychar = TYPENAME_DEFN;
       break;
     case PTYPENAME:
@@ -757,7 +758,7 @@ yylex ()
       break;
     }
     case IDENTIFIER_DEFN:
-    case TYPENAME:
+    case tTYPENAME:
     case TYPENAME_DEFN:
     case PTYPENAME:
     case PTYPENAME_DEFN:
@@ -897,7 +898,7 @@ frob_id (yyc, peek, idp)
       yyc = identifier_type (trrr);
       switch(yyc)
         {
-          case TYPENAME:
+          case tTYPENAME:
           case SELFNAME:
           case NSNAME:
           case PTYPENAME:
@@ -1448,7 +1449,7 @@ debug_yychar (yy)
 {
   if (yy<256)
     fprintf (stderr, "->%d < %c >\n", lineno, yy);
-  else if (yy == IDENTIFIER || yy == TYPENAME)
+  else if (yy == IDENTIFIER || yy == tTYPENAME)
     {
       const char *id;
       if (TREE_CODE (yylval.ttype) == IDENTIFIER_NODE)