From: Russ Cox Date: Fri, 19 Dec 2008 17:03:24 +0000 (-0800) Subject: new error messages X-Git-Tag: weekly.2009-11-06~2473 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=c4416ac06b8bf6e086411c3ea6f22643b2d41d7a;p=gostls13.git new error messages x.go:11: illegal types for operand: AS *I *T (*interface vs *struct) R=r DELTA=10 (8 added, 0 deleted, 2 changed) OCL=21457 CL=21602 --- diff --git a/src/cmd/gc/go.h b/src/cmd/gc/go.h index ed2df2629d..bd1e34662c 100644 --- a/src/cmd/gc/go.h +++ b/src/cmd/gc/go.h @@ -351,10 +351,10 @@ enum TFUNC, TARRAY, T_old_DARRAY, - TSTRUCT, + TSTRUCT, // 23 TCHAN, TMAP, - TINTER, + TINTER, // 26 TFORW, TFIELD, TANY, diff --git a/src/cmd/gc/subr.c b/src/cmd/gc/subr.c index e180258bb8..e1fb97d62b 100644 --- a/src/cmd/gc/subr.c +++ b/src/cmd/gc/subr.c @@ -2140,6 +2140,14 @@ loop: print(" %lT\n", tl); if(tr != T) print(" %lT\n", tr); + + // common mistake: *struct and *interface. + if(tl && tr && isptr[tl->etype] && isptr[tr->etype]) { + if(tl->type->etype == TSTRUCT && tr->type->etype == TINTER) + print(" (*struct vs *interface)\n"); + else if(tl->type->etype == TINTER && tr->type->etype == TSTRUCT) + print(" (*interface vs *struct)\n"); + } } /*