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);
}
}
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);
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);
if(s == S)
return fmtstrcpy(fp, "<S>");
- if(s->name[0] == '_' && s->name[1] == '\0')
+ if(s->name && s->name[0] == '_' && s->name[1] == '\0')
return fmtstrcpy(fp, "_");
sf = fp->flags;