From 01c2de0c150eda1433a83ca73f5c0d89bb398606 Mon Sep 17 00:00:00 2001 From: Ken Thompson Date: Tue, 17 Nov 2009 22:00:59 -0800 Subject: [PATCH] allow copy to be used without a return value R=rsc https://golang.org/cl/156060 --- src/cmd/gc/typecheck.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/cmd/gc/typecheck.c b/src/cmd/gc/typecheck.c index 86633b86d9..3e88237859 100644 --- a/src/cmd/gc/typecheck.c +++ b/src/cmd/gc/typecheck.c @@ -762,7 +762,7 @@ reswitch: goto ret; case OCOPY: - ok |= Erv; + ok |= Etop|Erv; args = n->list; if(args == nil || args->next == nil) { yyerror("missing arguments to copy"); @@ -772,19 +772,19 @@ reswitch: yyerror("too many arguments to copy"); goto error; } - typecheck(&args->n, Erv); - typecheck(&args->next->n, Erv); - if(!isslice(args->n->type) || !isslice(args->next->n->type)) { + n->left = args->n; + n->right = args->next->n; + n->type = types[TINT]; + typecheck(&n->left, Erv); + typecheck(&n->right, Erv); + if(!isslice(n->left->type) || !isslice(n->right->type)) { yyerror("arguments to copy must be slices"); goto error; } - if(!eqtype(args->n->type, args->next->n->type)) { + if(!eqtype(n->left->type, n->right->type)) { yyerror("arguments to copy must be slices of the same type"); goto error; } - n->left = args->n; - n->right = args->next->n; - n->type = types[TINT]; goto ret; case OCONV: -- 2.50.0