]> Cypherpunks repositories - gostls13.git/commitdiff
gc: fix line number for redundant print
authorRuss Cox <rsc@golang.org>
Fri, 2 Dec 2011 19:58:26 +0000 (14:58 -0500)
committerRuss Cox <rsc@golang.org>
Fri, 2 Dec 2011 19:58:26 +0000 (14:58 -0500)
R=ken2
CC=golang-dev
https://golang.org/cl/5434111

src/cmd/gc/go.y
src/cmd/gc/typecheck.c

index 81a02c01e4e018f48c45e74ea084a15c7ac53947..a42a7488f76d8a072a5ae0d1b2d87a78ec8f82c5 100644 (file)
@@ -66,7 +66,7 @@ static void fixlbrace(int);
 %type  <node>  pseudocall range_stmt select_stmt
 %type  <node>  simple_stmt
 %type  <node>  switch_stmt uexpr
-%type  <node>  xfndcl typedcl
+%type  <node>  xfndcl typedcl start_complit
 
 %type  <list>  xdcl fnbody fnres loop_body dcl_name_list
 %type  <list>  new_name_list expr_list keyval_list braced_keyval_list expr_or_type_list xdcl_list
@@ -900,29 +900,34 @@ pexpr_no_paren:
                $$ = nod(OCALL, $1, N);
                $$->list = list1($3);
        }
-|      comptype lbrace braced_keyval_list '}'
+|      comptype lbrace start_complit braced_keyval_list '}'
        {
-               // composite expression
-               $$ = nod(OCOMPLIT, N, $1);
-               $$->list = $3;
-               
+               $$ = $3;
+               $$->right = $1;
+               $$->list = $4;
                fixlbrace($2);
        }
-|      pexpr_no_paren '{' braced_keyval_list '}'
+|      pexpr_no_paren '{' start_complit braced_keyval_list '}'
        {
-               // composite expression
-               $$ = nod(OCOMPLIT, N, $1);
-               $$->list = $3;
+               $$ = $3;
+               $$->right = $1;
+               $$->list = $4;
        }
-|      '(' expr_or_type ')' '{' braced_keyval_list '}'
+|      '(' expr_or_type ')' '{' start_complit braced_keyval_list '}'
        {
-               yyerror("cannot parenthesize type in composite literal");
-               // composite expression
-               $$ = nod(OCOMPLIT, N, $2);
-               $$->list = $5;
+               $$ = $5;
+               $$->right = $2;
+               $$->list = $6;
        }
 |      fnliteral
 
+start_complit:
+       {
+               // composite expression.
+               // make node early so we get the right line number.
+               $$ = nod(OCOMPLIT, N, N);
+       }
+
 keyval:
        expr ':' complitexpr
        {
@@ -931,10 +936,10 @@ keyval:
 
 complitexpr:
        expr
-|      '{' braced_keyval_list '}'
+|      '{' start_complit braced_keyval_list '}'
        {
-               $$ = nod(OCOMPLIT, N, N);
-               $$->list = $2;
+               $$ = $2;
+               $$->list = $3;
        }
 
 pexpr:
index 8cd0dce3343a7fe10496d61d7db146170edbd611..802d6dcdc538787c785102ec6fb379dd0ada86e6 100644 (file)
@@ -1994,7 +1994,7 @@ pushtype(Node *n, Type *t)
        else if(debug['s']) {
                typecheck(&n->right, Etype);
                if(n->right->type != T && eqtype(n->right->type, t))
-                       print("%lL: redundant type: %T\n", n->right->lineno, t);
+                       print("%lL: redundant type: %T\n", n->lineno, t);
        }
 }