From: Luuk van Dijk Date: Tue, 13 Dec 2011 08:15:46 +0000 (+0100) Subject: gc: small fixes to fmt.c X-Git-Tag: weekly.2011-12-14~62 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=7cf4825425be6098b95a313ebe8008ea59c23611;p=gostls13.git gc: small fixes to fmt.c don't crash when printing error messages about symbols in a garbled state. render OCOMPLIT in export mode. R=rsc CC=golang-dev https://golang.org/cl/5466045 --- diff --git a/src/cmd/gc/fmt.c b/src/cmd/gc/fmt.c index 9733095019..7c50b51e44 100644 --- a/src/cmd/gc/fmt.c +++ b/src/cmd/gc/fmt.c @@ -511,7 +511,8 @@ symfmt(Fmt *fp, Sym *s) return fmtprint(fp, "%s.%s", s->pkg->name, s->name); // dcommontype, typehash return fmtprint(fp, "%s.%s", s->pkg->prefix, s->name); // (methodsym), typesym, weaksym case FExp: - return fmtprint(fp, "@\"%Z\".%s", s->pkg->path, s->name); + if(s->pkg != builtinpkg) + return fmtprint(fp, "@\"%Z\".%s", s->pkg->path, s->name); } } @@ -1073,7 +1074,9 @@ exprfmt(Fmt *f, Node *n, int prec) return fmtprint(f, "%T", n->type); case OTARRAY: - return fmtprint(f, "[]%N", n->left); + if(n->left) + return fmtprint(f, "[]%N", n->left); + return fmtprint(f, "[]%N", n->right); // happens before typecheck case OTPAREN: return fmtprint(f, "(%N)", n->left); @@ -1109,7 +1112,9 @@ exprfmt(Fmt *f, Node *n, int prec) return fmtprint(f, "%T { %H }", n->type, n->nbody); case OCOMPLIT: - return fmtstrcpy(f, "composite literal"); + if(fmtmode == FErr) + return fmtstrcpy(f, "composite literal"); + return fmtprint(f, "%N{ %,H }", n->right, n->list); case OPTRLIT: return fmtprint(f, "&%N", n->left); @@ -1401,7 +1406,7 @@ Sconv(Fmt *fp) if(s == S) return fmtstrcpy(fp, ""); - if(s->name[0] == '_' && s->name[1] == '\0') + if(s->name && s->name[0] == '_' && s->name[1] == '\0') return fmtstrcpy(fp, "_"); sf = fp->flags;