mirror of
https://github.com/golang/go
synced 2024-11-22 03:04:41 -07:00
gc: interface error message fixes
Fixes #1526. R=ken2 CC=golang-dev https://golang.org/cl/4190051
This commit is contained in:
parent
dd7403b1b8
commit
6e03ed32c7
@ -1909,8 +1909,12 @@ assignop(Type *src, Type *dst, char **why)
|
||||
return 0;
|
||||
}
|
||||
if(src->etype == TINTER && dst->etype != TBLANK) {
|
||||
if(why != nil)
|
||||
*why = ": need type assertion";
|
||||
if(why != nil) {
|
||||
if(isptrto(dst, TINTER))
|
||||
*why = smprint(":\n\t%T is interface, not pointer to interface", src);
|
||||
else
|
||||
*why = ": need type assertion";
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1613,7 +1613,7 @@ typecheckaste(int op, Node *call, int isddd, Type *tstruct, NodeList *nl, char *
|
||||
exportassignok(tn->type, desc);
|
||||
if(assignop(tn->type, tl->type->type, &why) == 0) {
|
||||
if(call != N)
|
||||
yyerror("cannot use %T as type %T in argument to %#N%s", tn->type, tl->type->type, desc, call, why);
|
||||
yyerror("cannot use %T as type %T in argument to %#N%s", tn->type, tl->type->type, call, why);
|
||||
else
|
||||
yyerror("cannot use %T as type %T in %s%s", tn->type, tl->type->type, desc, why);
|
||||
}
|
||||
@ -1625,7 +1625,7 @@ typecheckaste(int op, Node *call, int isddd, Type *tstruct, NodeList *nl, char *
|
||||
exportassignok(tn->type, desc);
|
||||
if(assignop(tn->type, tl->type, &why) == 0) {
|
||||
if(call != N)
|
||||
yyerror("cannot use %T as type %T in argument to %#N%s", tn->type, tl->type, desc, call, why);
|
||||
yyerror("cannot use %T as type %T in argument to %#N%s", tn->type, tl->type, call, why);
|
||||
else
|
||||
yyerror("cannot use %T as type %T in %s%s", tn->type, tl->type, desc, why);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user