p.op(ODOTTYPE)
p.pos(n)
p.expr(n.Left)
- if n.Right != nil {
- Fatalf("impossible")
- }
- p.bool(false)
p.typ(n.Type)
case OINDEX, OINDEXMAP:
case OCONV, OCONVIFACE, OCONVNOP, OARRAYBYTESTR, OARRAYRUNESTR, OSTRARRAYBYTE, OSTRARRAYRUNE, ORUNESTR:
p.op(OCONV)
p.pos(n)
+ p.expr(n.Left)
p.typ(n.Type)
- if n.Left != nil {
- p.expr(n.Left)
- p.op(OEND)
- } else {
- p.exprList(n.List) // emits terminating OEND
- }
case OREAL, OIMAG, OAPPEND, OCAP, OCLOSE, ODELETE, OLEN, OMAKE, ONEW, OPANIC, ORECOVER, OPRINT, OPRINTN:
p.op(op)
case ODOTTYPE:
n := nodl(p.pos(), ODOTTYPE, p.expr(), nil)
- if p.bool() {
- Fatalf("impossible")
- }
n.Type = p.typ()
return n
// unreachable - mapped to OCONV case below by exporter
case OCONV:
- n := nodl(p.pos(), OCONV, nil, nil)
+ n := nodl(p.pos(), OCONV, p.expr(), nil)
n.Type = p.typ()
- exprs := p.exprList()
- if len(exprs) != 1 {
- Fatalf("impossible")
- }
- n.Left = exprs[0]
return n
case OCOPY, OCOMPLEX, OREAL, OIMAG, OAPPEND, OCAP, OCLOSE, ODELETE, OLEN, OMAKE, ONEW, OPANIC, ORECOVER, OPRINT, OPRINTN: