From: Ken Thompson Date: Wed, 5 Nov 2008 23:33:01 +0000 (-0800) Subject: more on t,ok = I.(T) X-Git-Tag: weekly.2009-11-06~2788 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=83a798513cf487f6c5e0af919b9cf03246ded0ca;p=gostls13.git more on t,ok = I.(T) R=r OCL=18599 CL=18599 --- diff --git a/src/cmd/gc/walk.c b/src/cmd/gc/walk.c index f382390627..cdc675a915 100644 --- a/src/cmd/gc/walk.c +++ b/src/cmd/gc/walk.c @@ -469,6 +469,7 @@ loop: case OCONV: if(cl == 2 && cr == 1) { // a,b = i.(T) + walktype(r->left, Erv); if(r->left == N) break; et = isandss(r->type, r->left); @@ -2964,6 +2965,20 @@ multi: n = list(n, a); break; + case OCONV: + // a,b := i.(T) + if(cl != 2) + goto badt; + walktype(nr->left, Erv); + if(!isinter(nr->left->type)) + goto badt; + // a,b = iface + a = old2new(nl->left, nr->type); + n = a; + a = old2new(nl->right, types[TBOOL]); + n = list(n, a); + break; + case ORECV: if(cl != 2) goto badt; @@ -2975,6 +2990,7 @@ multi: n = a; a = old2new(nl->right, types[TBOOL]); n = list(n, a); + break; } n = rev(n); return n;