diff --git a/src/cmd/gc/walk.c b/src/cmd/gc/walk.c index 13ad69a65ad..e68833c42e6 100644 --- a/src/cmd/gc/walk.c +++ b/src/cmd/gc/walk.c @@ -597,13 +597,6 @@ loop: if(isptrarray(t) && isptrdarray(l->type)) goto ret; - // interface and structure - et = isandss(n->type, l); - if(et != Inone) { - indir(n, ifaceop(n->type, l, et)); - goto ret; - } - // structure literal if(t->etype == TSTRUCT) { indir(n, structlit(n)); @@ -624,6 +617,13 @@ loop: goto ret; } + // interface and structure + et = isandss(n->type, l); + if(et != Inone) { + indir(n, ifaceop(n->type, l, et)); + goto ret; + } + if(l->type != T) yyerror("cannot convert %T to %T", l->type, t); goto ret;