summaryrefslogtreecommitdiff
path: root/src/cmd/gc/print.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/gc/print.c')
-rw-r--r--src/cmd/gc/print.c47
1 files changed, 46 insertions, 1 deletions
diff --git a/src/cmd/gc/print.c b/src/cmd/gc/print.c
index 70d80c5e6..2960f2a11 100644
--- a/src/cmd/gc/print.c
+++ b/src/cmd/gc/print.c
@@ -36,6 +36,35 @@ exprfmt(Fmt *f, Node *n, int prec)
case ONONAME:
case OPACK:
case OLITERAL:
+ case ODOT:
+ case ODOTPTR:
+ case ODOTINTER:
+ case ODOTMETH:
+ case OARRAYBYTESTR:
+ case OCAP:
+ case OCLOSE:
+ case OCLOSED:
+ case OLEN:
+ case OMAKE:
+ case ONEW:
+ case OPANIC:
+ case OPANICN:
+ case OPRINT:
+ case OPRINTN:
+ case OCALL:
+ case OCONV:
+ case OCONVNOP:
+ case OCONVSLICE:
+ case OCONVIFACE:
+ case OMAKESLICE:
+ case ORUNESTR:
+ case OADDR:
+ case OCOM:
+ case OIND:
+ case OMINUS:
+ case ONOT:
+ case OPLUS:
+ case ORECV:
nprec = 7;
break;
@@ -232,6 +261,7 @@ exprfmt(Fmt *f, Node *n, int prec)
case OINDEX:
case OINDEXMAP:
+ case OINDEXSTR:
exprfmt(f, n->left, 7);
fmtprint(f, "[");
exprfmt(f, n->right, 0);
@@ -261,7 +291,12 @@ exprfmt(Fmt *f, Node *n, int prec)
case OCONVNOP:
case OCONVSLICE:
case OCONVIFACE:
- fmtprint(f, "%T(", n->type);
+ case OARRAYBYTESTR:
+ case ORUNESTR:
+ if(n->type->sym == S)
+ fmtprint(f, "(%T)(", n->type);
+ else
+ fmtprint(f, "%T(", n->type);
exprfmt(f, n->left, 0);
fmtprint(f, ")");
break;
@@ -283,6 +318,16 @@ exprfmt(Fmt *f, Node *n, int prec)
exprlistfmt(f, n->list);
fmtprint(f, ")");
break;
+
+ case OMAKESLICE:
+ fmtprint(f, "make(%#T, ", n->type);
+ exprfmt(f, n->left, 0);
+ if(count(n->list) > 2) {
+ fmtprint(f, ", ");
+ exprfmt(f, n->right, 0);
+ }
+ fmtprint(f, ")");
+ break;
}
if(prec > nprec)