Commit 07fc1457 authored by Russ Cox's avatar Russ Cox

gc: be more specific about copy type errors

Fixes #539.

R=ken2
CC=golang-dev
https://golang.org/cl/190043
parent da225c23
...@@ -810,12 +810,19 @@ reswitch: ...@@ -810,12 +810,19 @@ reswitch:
goto error; goto error;
toslice(&n->left); toslice(&n->left);
toslice(&n->right); toslice(&n->right);
defaultlit(&n->left, T);
defaultlit(&n->right, T);
if(!isslice(n->left->type) || !isslice(n->right->type)) { if(!isslice(n->left->type) || !isslice(n->right->type)) {
yyerror("arguments to copy must be slices or array pointers"); if(!isslice(n->left->type) && !isslice(n->right->type))
yyerror("arguments to copy must be array pointer or slice; have %lT, %lT", n->left->type, n->right->type);
else if(!isslice(n->left->type))
yyerror("first argument to copy should be array pointer or slice; have %lT", n->left->type);
else
yyerror("second argument to copy should be array pointer or slice; have %lT", n->right->type);
goto error; goto error;
} }
if(!eqtype(n->left->type, n->right->type)) { if(!eqtype(n->left->type, n->right->type)) {
yyerror("arguments to copy must have the same type element type"); yyerror("arguments to copy have different element types %lT and %lT", n->left->type, n->right->type);
goto error; goto error;
} }
goto ret; goto ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment