OSDN Git Service

* parse.y (typename_sub*): Fix std::.
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 25 Jan 1998 12:54:44 +0000 (12:54 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 25 Jan 1998 12:54:44 +0000 (12:54 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@17476 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 7fb9c4d..795a404 100644 (file)
@@ -1,3 +1,7 @@
+Sun Jan 25 03:30:00 1998  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * parse.y (typename_sub*): Fix std::.
+
 Sat Jan 24 12:13:54 1998  Jason Merrill  <jason@yorick.cygnus.com>
 
        * error.c (dump_decl): Fix type default template args.
index 16a12a7..85056b8 100644 (file)
@@ -701,30 +701,30 @@ static const short yyrline[] = { 0,
   3144,  3148,  3151,  3154,  3156,  3158,  3160,  3164,  3167,  3170,
   3172,  3174,  3176,  3183,  3194,  3198,  3203,  3207,  3212,  3214,
   3218,  3221,  3223,  3227,  3229,  3230,  3233,  3235,  3241,  3256,
-  3262,  3268,  3282,  3284,  3288,  3300,  3306,  3317,  3324,  3330,
-  3332,  3333,  3334,  3342,  3351,  3352,  3356,  3359,  3365,  3371,
-  3374,  3376,  3378,  3380,  3384,  3388,  3392,  3395,  3400,  3403,
-  3405,  3407,  3409,  3411,  3413,  3415,  3417,  3421,  3425,  3429,
-  3433,  3434,  3436,  3438,  3440,  3442,  3444,  3446,  3448,  3450,
-  3458,  3460,  3461,  3462,  3465,  3473,  3478,  3485,  3487,  3492,
-  3494,  3497,  3511,  3514,  3517,  3526,  3538,  3549,  3569,  3579,
-  3582,  3590,  3602,  3605,  3608,  3611,  3627,  3630,  3641,  3642,
-  3646,  3661,  3680,  3692,  3706,  3720,  3733,  3752,  3770,  3789,
-  3797,  3818,  3836,  3849,  3850,  3853,  3853,  3856,  3856,  3859,
-  3859,  3865,  3871,  3874,  3879,  3886,  3895,  3904,  3913,  3921,
-  3934,  3936,  3940,  3942,  3945,  3952,  3955,  3963,  3979,  3990,
-  4002,  4004,  4007,  4017,  4027,  4038,  4040,  4042,  4045,  4062,
-  4068,  4076,  4078,  4080,  4084,  4087,  4088,  4096,  4100,  4104,
-  4107,  4108,  4114,  4117,  4120,  4122,  4126,  4131,  4134,  4144,
-  4149,  4150,  4158,  4164,  4169,  4173,  4178,  4182,  4186,  4190,
-  4195,  4206,  4220,  4224,  4227,  4229,  4233,  4237,  4240,  4243,
-  4245,  4249,  4251,  4258,  4265,  4268,  4271,  4275,  4279,  4285,
-  4289,  4294,  4296,  4299,  4304,  4310,  4321,  4324,  4326,  4330,
-  4335,  4337,  4344,  4347,  4349,  4351,  4357,  4362,  4365,  4367,
-  4369,  4371,  4373,  4375,  4377,  4379,  4381,  4383,  4385,  4387,
-  4389,  4391,  4393,  4395,  4397,  4399,  4401,  4403,  4405,  4407,
-  4409,  4411,  4413,  4415,  4417,  4419,  4421,  4423,  4425,  4427,
-  4430,  4432
+  3262,  3268,  3282,  3284,  3288,  3304,  3310,  3325,  3332,  3338,
+  3340,  3341,  3342,  3350,  3359,  3360,  3364,  3367,  3373,  3379,
+  3382,  3384,  3386,  3388,  3392,  3396,  3400,  3403,  3408,  3411,
+  3413,  3415,  3417,  3419,  3421,  3423,  3425,  3429,  3433,  3437,
+  3441,  3442,  3444,  3446,  3448,  3450,  3452,  3454,  3456,  3458,
+  3466,  3468,  3469,  3470,  3473,  3481,  3486,  3493,  3495,  3500,
+  3502,  3505,  3519,  3522,  3525,  3534,  3546,  3557,  3577,  3587,
+  3590,  3598,  3610,  3613,  3616,  3619,  3635,  3638,  3649,  3650,
+  3654,  3669,  3688,  3700,  3714,  3728,  3741,  3760,  3778,  3797,
+  3805,  3826,  3844,  3857,  3858,  3861,  3861,  3864,  3864,  3867,
+  3867,  3873,  3879,  3882,  3887,  3894,  3903,  3912,  3921,  3929,
+  3942,  3944,  3948,  3950,  3953,  3960,  3963,  3971,  3987,  3998,
+  4010,  4012,  4015,  4025,  4035,  4046,  4048,  4050,  4053,  4070,
+  4076,  4084,  4086,  4088,  4092,  4095,  4096,  4104,  4108,  4112,
+  4115,  4116,  4122,  4125,  4128,  4130,  4134,  4139,  4142,  4152,
+  4157,  4158,  4166,  4172,  4177,  4181,  4186,  4190,  4194,  4198,
+  4203,  4214,  4228,  4232,  4235,  4237,  4241,  4245,  4248,  4251,
+  4253,  4257,  4259,  4266,  4273,  4276,  4279,  4283,  4287,  4293,
+  4297,  4302,  4304,  4307,  4312,  4318,  4329,  4332,  4334,  4338,
+  4343,  4345,  4352,  4355,  4357,  4359,  4365,  4370,  4373,  4375,
+  4377,  4379,  4381,  4383,  4385,  4387,  4389,  4391,  4393,  4395,
+  4397,  4399,  4401,  4403,  4405,  4407,  4409,  4411,  4413,  4415,
+  4417,  4419,  4421,  4423,  4425,  4427,  4429,  4431,  4433,  4435,
+  4438,  4440
 };
 #endif
 
@@ -7197,29 +7197,37 @@ case 615:
                  else if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
                    cp_error ("`%T' is not a class or namespace", yyvsp[0].ttype);
                  else
-                   yyval.ttype = yyvsp[0].ttype;
+                   {
+                     yyval.ttype = yyvsp[0].ttype;
+                     if (TREE_CODE (yyval.ttype) == TYPE_DECL)
+                       yyval.ttype = TREE_TYPE (yyval.ttype);
+                   }
                ;
     break;}
 case 616:
-#line 3302 "parse.y"
+#line 3306 "parse.y"
 {
                  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
                    cp_error ("`%T' is not a class or namespace", yyvsp[0].ttype);
                ;
     break;}
 case 617:
-#line 3307 "parse.y"
+#line 3311 "parse.y"
 {
                  if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't')
                    yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype);
                  else if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
                    cp_error ("`%T' is not a class or namespace", yyvsp[0].ttype);
                  else
-                   yyval.ttype = yyvsp[0].ttype;
+                   {
+                     yyval.ttype = yyvsp[0].ttype;
+                     if (TREE_CODE (yyval.ttype) == TYPE_DECL)
+                       yyval.ttype = TREE_TYPE (yyval.ttype);
+                   }
                ;
     break;}
 case 618:
-#line 3319 "parse.y"
+#line 3327 "parse.y"
 {
                  if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE)
                    yyval.ttype = lastiddecl;
@@ -7227,7 +7235,7 @@ case 618:
                ;
     break;}
 case 619:
-#line 3325 "parse.y"
+#line 3333 "parse.y"
 {
                  if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE)
                    yyval.ttype = lastiddecl;
@@ -7235,11 +7243,11 @@ case 619:
                ;
     break;}
 case 620:
-#line 3331 "parse.y"
+#line 3339 "parse.y"
 { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyval.ttype)); ;
     break;}
 case 623:
-#line 3335 "parse.y"
+#line 3343 "parse.y"
 {
                  if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE)
                    yyval.ttype = lastiddecl;
@@ -7247,7 +7255,7 @@ case 623:
                ;
     break;}
 case 624:
-#line 3344 "parse.y"
+#line 3352 "parse.y"
 {
                  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
                    yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype);
@@ -7257,156 +7265,156 @@ case 624:
                ;
     break;}
 case 626:
-#line 3353 "parse.y"
+#line 3361 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 627:
-#line 3358 "parse.y"
+#line 3366 "parse.y"
 { got_scope = NULL_TREE; ;
     break;}
 case 628:
-#line 3360 "parse.y"
+#line 3368 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; got_scope = NULL_TREE; ;
     break;}
 case 629:
-#line 3367 "parse.y"
+#line 3375 "parse.y"
 { got_scope = void_type_node; ;
     break;}
 case 630:
-#line 3373 "parse.y"
+#line 3381 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 631:
-#line 3375 "parse.y"
+#line 3383 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 632:
-#line 3377 "parse.y"
+#line 3385 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 633:
-#line 3379 "parse.y"
+#line 3387 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 634:
-#line 3381 "parse.y"
+#line 3389 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg);
                ;
     break;}
 case 635:
-#line 3385 "parse.y"
+#line 3393 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
                ;
     break;}
 case 637:
-#line 3394 "parse.y"
+#line 3402 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
 case 638:
-#line 3396 "parse.y"
+#line 3404 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
     break;}
 case 639:
-#line 3402 "parse.y"
+#line 3410 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 640:
-#line 3404 "parse.y"
+#line 3412 "parse.y"
 { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 641:
-#line 3406 "parse.y"
+#line 3414 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[0].ftype.t, NULL_TREE); ;
     break;}
 case 642:
-#line 3408 "parse.y"
+#line 3416 "parse.y"
 { yyval.ttype = make_pointer_declarator (NULL_TREE, NULL_TREE); ;
     break;}
 case 643:
-#line 3410 "parse.y"
+#line 3418 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 644:
-#line 3412 "parse.y"
+#line 3420 "parse.y"
 { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 645:
-#line 3414 "parse.y"
+#line 3422 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[0].ftype.t, NULL_TREE); ;
     break;}
 case 646:
-#line 3416 "parse.y"
+#line 3424 "parse.y"
 { yyval.ttype = make_reference_declarator (NULL_TREE, NULL_TREE); ;
     break;}
 case 647:
-#line 3418 "parse.y"
+#line 3426 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg);
                ;
     break;}
 case 648:
-#line 3422 "parse.y"
+#line 3430 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
                ;
     break;}
 case 650:
-#line 3431 "parse.y"
+#line 3439 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 652:
-#line 3435 "parse.y"
+#line 3443 "parse.y"
 { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 653:
-#line 3437 "parse.y"
+#line 3445 "parse.y"
 { yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 654:
-#line 3439 "parse.y"
+#line 3447 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
     break;}
 case 655:
-#line 3441 "parse.y"
+#line 3449 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
     break;}
 case 656:
-#line 3443 "parse.y"
+#line 3451 "parse.y"
 { yyval.ttype = make_call_declarator (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 657:
-#line 3445 "parse.y"
+#line 3453 "parse.y"
 { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 658:
-#line 3447 "parse.y"
+#line 3455 "parse.y"
 { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 659:
-#line 3449 "parse.y"
+#line 3457 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
 case 660:
-#line 3451 "parse.y"
+#line 3459 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, NULL_TREE); ;
     break;}
 case 666:
-#line 3475 "parse.y"
+#line 3483 "parse.y"
 { do_pushlevel (); ;
     break;}
 case 667:
-#line 3480 "parse.y"
+#line 3488 "parse.y"
 { yyval.ttype = do_poplevel (); ;
     break;}
 case 669:
-#line 3488 "parse.y"
+#line 3496 "parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C++ forbids label declarations"); ;
     break;}
 case 672:
-#line 3499 "parse.y"
+#line 3507 "parse.y"
 { tree link;
                  for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
                    {
@@ -7417,11 +7425,11 @@ case 672:
                ;
     break;}
 case 673:
-#line 3513 "parse.y"
+#line 3521 "parse.y"
 {;
     break;}
 case 675:
-#line 3519 "parse.y"
+#line 3527 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7431,7 +7439,7 @@ case 675:
                ;
     break;}
 case 676:
-#line 3527 "parse.y"
+#line 3535 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7443,7 +7451,7 @@ case 676:
                ;
     break;}
 case 677:
-#line 3540 "parse.y"
+#line 3548 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7455,7 +7463,7 @@ case 677:
                ;
     break;}
 case 678:
-#line 3550 "parse.y"
+#line 3558 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7476,7 +7484,7 @@ case 678:
                ;
     break;}
 case 679:
-#line 3569 "parse.y"
+#line 3577 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7487,11 +7495,11 @@ case 679:
                ;
     break;}
 case 680:
-#line 3581 "parse.y"
+#line 3589 "parse.y"
 { finish_stmt (); ;
     break;}
 case 681:
-#line 3583 "parse.y"
+#line 3591 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7501,7 +7509,7 @@ case 681:
                ;
     break;}
 case 682:
-#line 3591 "parse.y"
+#line 3599 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7513,15 +7521,15 @@ case 682:
                ;
     break;}
 case 683:
-#line 3604 "parse.y"
+#line 3612 "parse.y"
 { finish_stmt (); ;
     break;}
 case 685:
-#line 3610 "parse.y"
+#line 3618 "parse.y"
 { finish_stmt (); ;
     break;}
 case 686:
-#line 3612 "parse.y"
+#line 3620 "parse.y"
 {
                  tree expr = yyvsp[-1].ttype;
                  if (! processing_template_decl)
@@ -7539,11 +7547,11 @@ case 686:
                  finish_stmt (); ;
     break;}
 case 687:
-#line 3628 "parse.y"
+#line 3636 "parse.y"
 { if (! processing_template_decl) expand_start_else (); ;
     break;}
 case 688:
-#line 3630 "parse.y"
+#line 3638 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7556,17 +7564,17 @@ case 688:
                ;
     break;}
 case 689:
-#line 3641 "parse.y"
+#line 3649 "parse.y"
 { finish_stmt (); ;
     break;}
 case 690:
-#line 3643 "parse.y"
+#line 3651 "parse.y"
 { if (! processing_template_decl) expand_end_cond ();
                  do_poplevel ();
                  finish_stmt (); ;
     break;}
 case 691:
-#line 3647 "parse.y"
+#line 3655 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7583,7 +7591,7 @@ case 691:
                ;
     break;}
 case 692:
-#line 3662 "parse.y"
+#line 3670 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7604,7 +7612,7 @@ case 692:
                ;
     break;}
 case 693:
-#line 3681 "parse.y"
+#line 3689 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7618,7 +7626,7 @@ case 693:
                ;
     break;}
 case 694:
-#line 3693 "parse.y"
+#line 3701 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7634,7 +7642,7 @@ case 694:
                ;
     break;}
 case 695:
-#line 3707 "parse.y"
+#line 3715 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7650,7 +7658,7 @@ case 695:
                ;
     break;}
 case 696:
-#line 3721 "parse.y"
+#line 3729 "parse.y"
 {
                  if (processing_template_decl)
                    TREE_OPERAND (yyvsp[-5].ttype, 1) = yyvsp[-1].ttype;
@@ -7665,7 +7673,7 @@ case 696:
                ;
     break;}
 case 697:
-#line 3734 "parse.y"
+#line 3742 "parse.y"
 { if (processing_template_decl)
                    {
                      yyval.ttype = build_min_nt (FOR_STMT, NULL_TREE, NULL_TREE, 
@@ -7686,7 +7694,7 @@ case 697:
                ;
     break;}
 case 698:
-#line 3753 "parse.y"
+#line 3761 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7706,7 +7714,7 @@ case 698:
                ;
     break;}
 case 699:
-#line 3771 "parse.y"
+#line 3779 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7727,7 +7735,7 @@ case 699:
                ;
     break;}
 case 700:
-#line 3792 "parse.y"
+#line 3800 "parse.y"
 {
                  if (processing_template_decl)
                    TREE_OPERAND (yyvsp[-9].ttype, 2) = yyvsp[-1].ttype;
@@ -7735,7 +7743,7 @@ case 700:
                ;
     break;}
 case 701:
-#line 3798 "parse.y"
+#line 3806 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7758,7 +7766,7 @@ case 701:
                  finish_stmt (); ;
     break;}
 case 702:
-#line 3819 "parse.y"
+#line 3827 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7777,7 +7785,7 @@ case 702:
                ;
     break;}
 case 703:
-#line 3836 "parse.y"
+#line 3844 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7792,23 +7800,23 @@ case 703:
                ;
     break;}
 case 704:
-#line 3849 "parse.y"
+#line 3857 "parse.y"
 { finish_stmt (); ;
     break;}
 case 705:
-#line 3851 "parse.y"
+#line 3859 "parse.y"
 { do_case (yyvsp[-1].ttype, NULL_TREE); ;
     break;}
 case 707:
-#line 3854 "parse.y"
+#line 3862 "parse.y"
 { do_case (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 709:
-#line 3857 "parse.y"
+#line 3865 "parse.y"
 { do_case (NULL_TREE, NULL_TREE); ;
     break;}
 case 711:
-#line 3860 "parse.y"
+#line 3868 "parse.y"
 { emit_line_note (input_filename, lineno);
                  if (processing_template_decl)
                    add_tree (build_min_nt (BREAK_STMT));
@@ -7816,7 +7824,7 @@ case 711:
                    error ("break statement not within loop or switch"); ;
     break;}
 case 712:
-#line 3866 "parse.y"
+#line 3874 "parse.y"
 { emit_line_note (input_filename, lineno);
                  if (processing_template_decl)
                    add_tree (build_min_nt (CONTINUE_STMT));
@@ -7824,19 +7832,19 @@ case 712:
                    error ("continue statement not within a loop"); ;
     break;}
 case 713:
-#line 3872 "parse.y"
+#line 3880 "parse.y"
 { emit_line_note (input_filename, lineno);
                  c_expand_return (NULL_TREE); ;
     break;}
 case 714:
-#line 3875 "parse.y"
+#line 3883 "parse.y"
 { emit_line_note (input_filename, lineno);
                  c_expand_return (yyvsp[-1].ttype);
                  finish_stmt ();
                ;
     break;}
 case 715:
-#line 3880 "parse.y"
+#line 3888 "parse.y"
 { if (TREE_CHAIN (yyvsp[-2].ttype)) yyvsp[-2].ttype = combine_strings (yyvsp[-2].ttype);
                  emit_line_note (input_filename, lineno);
                  expand_asm (yyvsp[-2].ttype);
@@ -7844,7 +7852,7 @@ case 715:
                ;
     break;}
 case 716:
-#line 3887 "parse.y"
+#line 3895 "parse.y"
 { if (TREE_CHAIN (yyvsp[-4].ttype)) yyvsp[-4].ttype = combine_strings (yyvsp[-4].ttype);
                  emit_line_note (input_filename, lineno);
                  c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
@@ -7854,7 +7862,7 @@ case 716:
                ;
     break;}
 case 717:
-#line 3896 "parse.y"
+#line 3904 "parse.y"
 { if (TREE_CHAIN (yyvsp[-6].ttype)) yyvsp[-6].ttype = combine_strings (yyvsp[-6].ttype);
                  emit_line_note (input_filename, lineno);
                  c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
@@ -7864,7 +7872,7 @@ case 717:
                ;
     break;}
 case 718:
-#line 3906 "parse.y"
+#line 3914 "parse.y"
 { if (TREE_CHAIN (yyvsp[-8].ttype)) yyvsp[-8].ttype = combine_strings (yyvsp[-8].ttype);
                  emit_line_note (input_filename, lineno);
                  c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
@@ -7874,7 +7882,7 @@ case 718:
                ;
     break;}
 case 719:
-#line 3914 "parse.y"
+#line 3922 "parse.y"
 {
                  if (processing_template_decl)
                    add_tree (build_min_nt (GOTO_STMT, yyvsp[-1].ttype));
@@ -7884,7 +7892,7 @@ case 719:
                ;
     break;}
 case 720:
-#line 3922 "parse.y"
+#line 3930 "parse.y"
 {
                  if (processing_template_decl)
                    add_tree (build_min_nt (GOTO_STMT, yyvsp[-1].ttype));
@@ -7899,21 +7907,21 @@ case 720:
                ;
     break;}
 case 721:
-#line 3935 "parse.y"
+#line 3943 "parse.y"
 { finish_stmt (); ;
     break;}
 case 722:
-#line 3937 "parse.y"
+#line 3945 "parse.y"
 { error ("label must be followed by statement");
                  yyungetc ('}', 0);
                  finish_stmt (); ;
     break;}
 case 723:
-#line 3941 "parse.y"
+#line 3949 "parse.y"
 { finish_stmt (); ;
     break;}
 case 725:
-#line 3947 "parse.y"
+#line 3955 "parse.y"
 {
                  if (! current_function_parms_stored)
                    store_parm_decls ();
@@ -7921,11 +7929,11 @@ case 725:
                ;
     break;}
 case 726:
-#line 3953 "parse.y"
+#line 3961 "parse.y"
 { expand_start_all_catch (); ;
     break;}
 case 727:
-#line 3955 "parse.y"
+#line 3963 "parse.y"
 {
                  int nested = (hack_decl_function_context
                                (current_function_decl) != NULL_TREE);
@@ -7934,7 +7942,7 @@ case 727:
                ;
     break;}
 case 728:
-#line 3965 "parse.y"
+#line 3973 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7950,7 +7958,7 @@ case 728:
                ;
     break;}
 case 729:
-#line 3979 "parse.y"
+#line 3987 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7963,7 +7971,7 @@ case 729:
                ;
     break;}
 case 730:
-#line 3990 "parse.y"
+#line 3998 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7976,7 +7984,7 @@ case 730:
                ;
     break;}
 case 733:
-#line 4009 "parse.y"
+#line 4017 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7987,7 +7995,7 @@ case 733:
                ;
     break;}
 case 734:
-#line 4018 "parse.y"
+#line 4026 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -7998,7 +8006,7 @@ case 734:
                ;
     break;}
 case 735:
-#line 4027 "parse.y"
+#line 4035 "parse.y"
 {
                  if (processing_template_decl)
                    {
@@ -8011,17 +8019,17 @@ case 735:
                ;
     break;}
 case 739:
-#line 4047 "parse.y"
+#line 4055 "parse.y"
 { expand_start_catch_block (NULL_TREE, NULL_TREE); ;
     break;}
 case 740:
-#line 4063 "parse.y"
+#line 4071 "parse.y"
 { check_for_new_type ("inside exception declarations", yyvsp[-1].ftype);
                  expand_start_catch_block (TREE_PURPOSE (yyvsp[-1].ftype.t),
                                            TREE_VALUE (yyvsp[-1].ftype.t)); ;
     break;}
 case 741:
-#line 4070 "parse.y"
+#line 4078 "parse.y"
 { tree label;
                do_label:
                  label = define_label (input_filename, lineno, yyvsp[-1].ttype);
@@ -8030,129 +8038,129 @@ case 741:
                ;
     break;}
 case 742:
-#line 4077 "parse.y"
+#line 4085 "parse.y"
 { goto do_label; ;
     break;}
 case 743:
-#line 4079 "parse.y"
+#line 4087 "parse.y"
 { goto do_label; ;
     break;}
 case 744:
-#line 4081 "parse.y"
+#line 4089 "parse.y"
 { goto do_label; ;
     break;}
 case 745:
-#line 4086 "parse.y"
+#line 4094 "parse.y"
 { if (yyvsp[-1].ttype) cplus_expand_expr_stmt (yyvsp[-1].ttype); ;
     break;}
 case 747:
-#line 4089 "parse.y"
+#line 4097 "parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C++ forbids compound statements inside for initializations");
                ;
     break;}
 case 748:
-#line 4098 "parse.y"
+#line 4106 "parse.y"
 { emit_line_note (input_filename, lineno);
                  yyval.ttype = NULL_TREE; ;
     break;}
 case 749:
-#line 4101 "parse.y"
+#line 4109 "parse.y"
 { emit_line_note (input_filename, lineno); ;
     break;}
 case 750:
-#line 4106 "parse.y"
+#line 4114 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 752:
-#line 4109 "parse.y"
+#line 4117 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 753:
-#line 4116 "parse.y"
+#line 4124 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 756:
-#line 4123 "parse.y"
+#line 4131 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 757:
-#line 4128 "parse.y"
+#line 4136 "parse.y"
 { yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ;
     break;}
 case 758:
-#line 4133 "parse.y"
+#line 4141 "parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ;
     break;}
 case 759:
-#line 4135 "parse.y"
+#line 4143 "parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
     break;}
 case 760:
-#line 4146 "parse.y"
+#line 4154 "parse.y"
 {
                  yyval.ttype = empty_parms();
                ;
     break;}
 case 762:
-#line 4151 "parse.y"
+#line 4159 "parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ftype.t, void_list_node);
                  TREE_PARMLIST (yyval.ttype) = 1; 
                  check_for_new_type ("inside parameter list", yyvsp[0].ftype); ;
     break;}
 case 763:
-#line 4160 "parse.y"
+#line 4168 "parse.y"
 {
                  yyval.ttype = chainon (yyval.ttype, void_list_node);
                  TREE_PARMLIST (yyval.ttype) = 1;
                ;
     break;}
 case 764:
-#line 4165 "parse.y"
+#line 4173 "parse.y"
 {
                  TREE_PARMLIST (yyval.ttype) = 1;
                ;
     break;}
 case 765:
-#line 4170 "parse.y"
+#line 4178 "parse.y"
 {
                  TREE_PARMLIST (yyval.ttype) = 1;
                ;
     break;}
 case 766:
-#line 4174 "parse.y"
+#line 4182 "parse.y"
 {
                  yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t); 
                  TREE_PARMLIST (yyval.ttype) = 1;
                ;
     break;}
 case 767:
-#line 4179 "parse.y"
+#line 4187 "parse.y"
 {
                  yyval.ttype = NULL_TREE;
                ;
     break;}
 case 768:
-#line 4183 "parse.y"
+#line 4191 "parse.y"
 {
                  TREE_PARMLIST (yyval.ttype) = 1;
                ;
     break;}
 case 769:
-#line 4187 "parse.y"
+#line 4195 "parse.y"
 {
                  TREE_PARMLIST (yyval.ttype) = 1;
                ;
     break;}
 case 770:
-#line 4191 "parse.y"
+#line 4199 "parse.y"
 {
                  yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t);
                  TREE_PARMLIST (yyval.ttype) = 1;
                ;
     break;}
 case 771:
-#line 4196 "parse.y"
+#line 4204 "parse.y"
 {
                  /* This helps us recover from really nasty
                     parse errors, for example, a missing right
@@ -8165,7 +8173,7 @@ case 771:
                ;
     break;}
 case 772:
-#line 4207 "parse.y"
+#line 4215 "parse.y"
 {
                  /* This helps us recover from really nasty
                     parse errors, for example, a missing right
@@ -8178,98 +8186,98 @@ case 772:
                ;
     break;}
 case 773:
-#line 4222 "parse.y"
+#line 4230 "parse.y"
 { maybe_snarf_defarg (); ;
     break;}
 case 774:
-#line 4224 "parse.y"
+#line 4232 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 777:
-#line 4235 "parse.y"
+#line 4243 "parse.y"
 { check_for_new_type ("in a parameter list", yyvsp[0].ftype);
                  yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); ;
     break;}
 case 778:
-#line 4238 "parse.y"
+#line 4246 "parse.y"
 { check_for_new_type ("in a parameter list", yyvsp[-1].ftype);
                  yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t); ;
     break;}
 case 779:
-#line 4241 "parse.y"
+#line 4249 "parse.y"
 { check_for_new_type ("in a parameter list", yyvsp[0].ftype);
                  yyval.ttype = chainon (yyval.ttype, yyvsp[0].ftype.t); ;
     break;}
 case 780:
-#line 4244 "parse.y"
+#line 4252 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
 case 781:
-#line 4246 "parse.y"
+#line 4254 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ;
     break;}
 case 783:
-#line 4252 "parse.y"
+#line 4260 "parse.y"
 { check_for_new_type ("in a parameter list", yyvsp[-1].ftype);
                  yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t); ;
     break;}
 case 784:
-#line 4262 "parse.y"
+#line 4270 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ftype.t);
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag;
                  yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); ;
     break;}
 case 785:
-#line 4266 "parse.y"
+#line 4274 "parse.y"
 { yyval.ftype.t = build_tree_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 786:
-#line 4269 "parse.y"
+#line 4277 "parse.y"
 { yyval.ftype.t = build_tree_list (get_decl_list (yyvsp[-1].ftype.t), yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 787:
-#line 4272 "parse.y"
+#line 4280 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ftype.t);
                  yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype);
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 788:
-#line 4276 "parse.y"
+#line 4284 "parse.y"
 { tree specs = strip_attrs (yyvsp[0].ftype.t);
                  yyval.ftype.t = build_tree_list (specs, NULL_TREE); 
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
     break;}
 case 789:
-#line 4280 "parse.y"
+#line 4288 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ttype);
                  yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = 0; ;
     break;}
 case 790:
-#line 4287 "parse.y"
+#line 4295 "parse.y"
 { yyval.ftype.t = build_tree_list (NULL_TREE, yyvsp[0].ftype.t);
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag;  ;
     break;}
 case 791:
-#line 4290 "parse.y"
+#line 4298 "parse.y"
 { yyval.ftype.t = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t);
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag;  ;
     break;}
 case 794:
-#line 4301 "parse.y"
+#line 4309 "parse.y"
 { see_typename (); ;
     break;}
 case 795:
-#line 4306 "parse.y"
+#line 4314 "parse.y"
 {
                  error ("type specifier omitted for parameter");
                  yyval.ttype = build_tree_list (integer_type_node, NULL_TREE);
                ;
     break;}
 case 796:
-#line 4311 "parse.y"
+#line 4319 "parse.y"
 {
                  error ("type specifier omitted for parameter");
                  if (TREE_CODE (yyval.ttype) == SCOPE_REF
@@ -8280,188 +8288,188 @@ case 796:
                ;
     break;}
 case 797:
-#line 4323 "parse.y"
+#line 4331 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 798:
-#line 4325 "parse.y"
+#line 4333 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 799:
-#line 4327 "parse.y"
+#line 4335 "parse.y"
 { yyval.ttype = build_decl_list (NULL_TREE, NULL_TREE); ;
     break;}
 case 800:
-#line 4332 "parse.y"
+#line 4340 "parse.y"
 { yyval.ttype = build_decl_list (NULL_TREE, groktypename(yyvsp[0].ftype.t)); ;
     break;}
 case 802:
-#line 4338 "parse.y"
+#line 4346 "parse.y"
 {
                  TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype;
                  yyval.ttype = yyvsp[0].ttype;
                ;
     break;}
 case 803:
-#line 4346 "parse.y"
+#line 4354 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 804:
-#line 4348 "parse.y"
+#line 4356 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 805:
-#line 4350 "parse.y"
+#line 4358 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 806:
-#line 4352 "parse.y"
+#line 4360 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
                ;
     break;}
 case 807:
-#line 4359 "parse.y"
+#line 4367 "parse.y"
 { got_scope = NULL_TREE; ;
     break;}
 case 808:
-#line 4364 "parse.y"
+#line 4372 "parse.y"
 { yyval.ttype = ansi_opname[MULT_EXPR]; ;
     break;}
 case 809:
-#line 4366 "parse.y"
+#line 4374 "parse.y"
 { yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ;
     break;}
 case 810:
-#line 4368 "parse.y"
+#line 4376 "parse.y"
 { yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ;
     break;}
 case 811:
-#line 4370 "parse.y"
+#line 4378 "parse.y"
 { yyval.ttype = ansi_opname[PLUS_EXPR]; ;
     break;}
 case 812:
-#line 4372 "parse.y"
+#line 4380 "parse.y"
 { yyval.ttype = ansi_opname[MINUS_EXPR]; ;
     break;}
 case 813:
-#line 4374 "parse.y"
+#line 4382 "parse.y"
 { yyval.ttype = ansi_opname[BIT_AND_EXPR]; ;
     break;}
 case 814:
-#line 4376 "parse.y"
+#line 4384 "parse.y"
 { yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ;
     break;}
 case 815:
-#line 4378 "parse.y"
+#line 4386 "parse.y"
 { yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ;
     break;}
 case 816:
-#line 4380 "parse.y"
+#line 4388 "parse.y"
 { yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ;
     break;}
 case 817:
-#line 4382 "parse.y"
+#line 4390 "parse.y"
 { yyval.ttype = ansi_opname[COMPOUND_EXPR]; ;
     break;}
 case 818:
-#line 4384 "parse.y"
+#line 4392 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
 case 819:
-#line 4386 "parse.y"
+#line 4394 "parse.y"
 { yyval.ttype = ansi_opname[LT_EXPR]; ;
     break;}
 case 820:
-#line 4388 "parse.y"
+#line 4396 "parse.y"
 { yyval.ttype = ansi_opname[GT_EXPR]; ;
     break;}
 case 821:
-#line 4390 "parse.y"
+#line 4398 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
 case 822:
-#line 4392 "parse.y"
+#line 4400 "parse.y"
 { yyval.ttype = ansi_assopname[yyvsp[0].code]; ;
     break;}
 case 823:
-#line 4394 "parse.y"
+#line 4402 "parse.y"
 { yyval.ttype = ansi_opname [MODIFY_EXPR]; ;
     break;}
 case 824:
-#line 4396 "parse.y"
+#line 4404 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
 case 825:
-#line 4398 "parse.y"
+#line 4406 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
 case 826:
-#line 4400 "parse.y"
+#line 4408 "parse.y"
 { yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ;
     break;}
 case 827:
-#line 4402 "parse.y"
+#line 4410 "parse.y"
 { yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ;
     break;}
 case 828:
-#line 4404 "parse.y"
+#line 4412 "parse.y"
 { yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ;
     break;}
 case 829:
-#line 4406 "parse.y"
+#line 4414 "parse.y"
 { yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ;
     break;}
 case 830:
-#line 4408 "parse.y"
+#line 4416 "parse.y"
 { yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ;
     break;}
 case 831:
-#line 4410 "parse.y"
+#line 4418 "parse.y"
 { yyval.ttype = ansi_opname[COND_EXPR]; ;
     break;}
 case 832:
-#line 4412 "parse.y"
+#line 4420 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
 case 833:
-#line 4414 "parse.y"
+#line 4422 "parse.y"
 { yyval.ttype = ansi_opname[COMPONENT_REF]; ;
     break;}
 case 834:
-#line 4416 "parse.y"
+#line 4424 "parse.y"
 { yyval.ttype = ansi_opname[MEMBER_REF]; ;
     break;}
 case 835:
-#line 4418 "parse.y"
+#line 4426 "parse.y"
 { yyval.ttype = ansi_opname[CALL_EXPR]; ;
     break;}
 case 836:
-#line 4420 "parse.y"
+#line 4428 "parse.y"
 { yyval.ttype = ansi_opname[ARRAY_REF]; ;
     break;}
 case 837:
-#line 4422 "parse.y"
+#line 4430 "parse.y"
 { yyval.ttype = ansi_opname[NEW_EXPR]; ;
     break;}
 case 838:
-#line 4424 "parse.y"
+#line 4432 "parse.y"
 { yyval.ttype = ansi_opname[DELETE_EXPR]; ;
     break;}
 case 839:
-#line 4426 "parse.y"
+#line 4434 "parse.y"
 { yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ;
     break;}
 case 840:
-#line 4428 "parse.y"
+#line 4436 "parse.y"
 { yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ;
     break;}
 case 841:
-#line 4431 "parse.y"
+#line 4439 "parse.y"
 { yyval.ttype = grokoptypename (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 842:
-#line 4433 "parse.y"
+#line 4441 "parse.y"
 { yyval.ttype = ansi_opname[ERROR_MARK]; ;
     break;}
 }
@@ -8662,7 +8670,7 @@ yyerrhandle:
   yystate = yyn;
   goto yynewstate;
 }
-#line 4436 "parse.y"
+#line 4444 "parse.y"
 
 
 #ifdef SPEW_DEBUG
index 754dbef..c0a9219 100644 (file)
@@ -3293,7 +3293,11 @@ typename_sub0:
                  else if (TREE_CODE ($2) == IDENTIFIER_NODE)
                    cp_error ("`%T' is not a class or namespace", $2);
                  else
-                   $$ = $2;
+                   {
+                     $$ = $2;
+                     if (TREE_CODE ($$) == TYPE_DECL)
+                       $$ = TREE_TYPE ($$);
+                   }
                }
        ;
 
@@ -3310,7 +3314,11 @@ typename_sub1:
                  else if (TREE_CODE ($2) == IDENTIFIER_NODE)
                    cp_error ("`%T' is not a class or namespace", $2);
                  else
-                   $$ = $2;
+                   {
+                     $$ = $2;
+                     if (TREE_CODE ($$) == TYPE_DECL)
+                       $$ = TREE_TYPE ($$);
+                   }
                }
        ;