mirror of
https://github.com/golang/go
synced 2024-11-20 10:54:49 -07:00
make string(array) take []byte only (and thus *[10]byte but not [10]byte)
R=ken OCL=27581 CL=27585
This commit is contained in:
parent
e2bf22715d
commit
3ea8d854a3
@ -1230,8 +1230,9 @@ walkconv(Node *n)
|
|||||||
indir(n, stringop(n, Erv));
|
indir(n, stringop(n, Erv));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(et == TARRAY)
|
// can convert []byte and *[10]byte
|
||||||
if(istype(l->type->type, TUINT8)) {
|
if((isptr[et] && isfixedarray(l->type->type) && istype(l->type->type->type, TUINT8))
|
||||||
|
|| (isslice(l->type) && istype(l->type->type, TUINT8))) {
|
||||||
n->op = OARRAY;
|
n->op = OARRAY;
|
||||||
indir(n, stringop(n, Erv));
|
indir(n, stringop(n, Erv));
|
||||||
return;
|
return;
|
||||||
@ -1267,6 +1268,9 @@ walkconv(Node *n)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bad:
|
bad:
|
||||||
|
if(n->diag)
|
||||||
|
return;
|
||||||
|
n->diag = 1;
|
||||||
if(l->type != T)
|
if(l->type != T)
|
||||||
yyerror("invalid conversion: %T to %T", l->type, t);
|
yyerror("invalid conversion: %T to %T", l->type, t);
|
||||||
else
|
else
|
||||||
@ -2204,8 +2208,6 @@ stringop(Node *n, int top)
|
|||||||
case OARRAY:
|
case OARRAY:
|
||||||
// arraystring([]byte) string;
|
// arraystring([]byte) string;
|
||||||
r = n->left;
|
r = n->left;
|
||||||
if(isfixedarray(r->type))
|
|
||||||
r = nod(OADDR, r, N);
|
|
||||||
on = syslook("arraystring", 0);
|
on = syslook("arraystring", 0);
|
||||||
r = nod(OCALL, on, r);
|
r = nod(OCALL, on, r);
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user