diff options
author | Russ Cox <rsc@golang.org> | 2011-12-02 14:58:26 -0500 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2011-12-02 14:58:26 -0500 |
commit | 7a42dddbe64f6f056f3940efd5758cfcd682bd90 (patch) | |
tree | e25d224b76c187aba0567e3cc7889e4f4741b536 | |
parent | 434a6c85cb80ccb413377c550a94039bac6b33b3 (diff) | |
download | go-7a42dddbe64f6f056f3940efd5758cfcd682bd90.tar.gz go-7a42dddbe64f6f056f3940efd5758cfcd682bd90.zip |
gc: fix line number for redundant print
R=ken2
CC=golang-dev
https://golang.org/cl/5434111
-rw-r--r-- | src/cmd/gc/go.y | 41 | ||||
-rw-r--r-- | src/cmd/gc/typecheck.c | 2 |
2 files changed, 24 insertions, 19 deletions
diff --git a/src/cmd/gc/go.y b/src/cmd/gc/go.y index 81a02c01e4..a42a7488f7 100644 --- a/src/cmd/gc/go.y +++ b/src/cmd/gc/go.y @@ -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: diff --git a/src/cmd/gc/typecheck.c b/src/cmd/gc/typecheck.c index 8cd0dce334..802d6dcdc5 100644 --- a/src/cmd/gc/typecheck.c +++ b/src/cmd/gc/typecheck.c @@ -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); } } |