return n
case OSTRUCTLIT:
- n := npos(p.pos(), nod(OCOMPLIT, nil, typenod(p.typ())))
+ n := nodl(p.pos(), OCOMPLIT, nil, typenod(p.typ()))
n.List.Set(p.elemList()) // special handling of field names
return n
// unreachable - mapped to case OCOMPLIT below by exporter
case OCOMPLIT:
- n := npos(p.pos(), nod(OCOMPLIT, nil, typenod(p.typ())))
+ n := nodl(p.pos(), OCOMPLIT, nil, typenod(p.typ()))
n.List.Set(p.exprList())
return n
case OKEY:
pos := p.pos()
left, right := p.exprsOrNil()
- return npos(pos, nod(OKEY, left, right))
+ return nodl(pos, OKEY, left, right)
// case OSTRUCTKEY:
// unreachable - handled in case OSTRUCTLIT by elemList
// unreachable - mapped to case ODOTTYPE below by exporter
case ODOTTYPE:
- n := npos(p.pos(), nod(ODOTTYPE, p.expr(), nil))
+ n := nodl(p.pos(), ODOTTYPE, p.expr(), nil)
if p.bool() {
n.Right = p.expr()
} else {
// unreachable - mapped to cases below by exporter
case OINDEX:
- return npos(p.pos(), nod(op, p.expr(), p.expr()))
+ return nodl(p.pos(), op, p.expr(), p.expr())
case OSLICE, OSLICE3:
- n := npos(p.pos(), nod(op, p.expr(), nil))
+ n := nodl(p.pos(), op, p.expr(), nil)
low, high := p.exprsOrNil()
var max *Node
if n.Op.IsSlice3() {
// unreachable - mapped to OCONV case below by exporter
case OCONV:
- n := npos(p.pos(), nod(OCALL, typenod(p.typ()), nil))
+ n := nodl(p.pos(), OCALL, typenod(p.typ()), nil)
n.List.Set(p.exprList())
return n
// unreachable - mapped to OCALL case below by exporter
case OCALL:
- n := npos(p.pos(), nod(OCALL, p.expr(), nil))
+ n := nodl(p.pos(), OCALL, p.expr(), nil)
n.List.Set(p.exprList())
n.SetIsddd(p.bool())
return n
// unary expressions
case OPLUS, OMINUS, OADDR, OCOM, OIND, ONOT, ORECV:
- return npos(p.pos(), nod(op, p.expr(), nil))
+ return nodl(p.pos(), op, p.expr(), nil)
// binary expressions
case OADD, OAND, OANDAND, OANDNOT, ODIV, OEQ, OGE, OGT, OLE, OLT,
OLSH, OMOD, OMUL, ONE, OOR, OOROR, ORSH, OSEND, OSUB, OXOR:
- return npos(p.pos(), nod(op, p.expr(), p.expr()))
+ return nodl(p.pos(), op, p.expr(), p.expr())
case OADDSTR:
pos := p.pos()
list := p.exprList()
x := npos(pos, list[0])
for _, y := range list[1:] {
- x = npos(pos, nod(OADD, x, y))
+ x = nodl(pos, OADD, x, y)
}
return x
case ODCLCONST:
// TODO(gri) these should not be exported in the first place
- return npos(p.pos(), nod(OEMPTY, nil, nil))
+ return nodl(p.pos(), OEMPTY, nil, nil)
// --------------------------------------------------------------------
// statements
// unreachable - mapped to OAS case below by exporter
case OAS:
- return npos(p.pos(), nod(OAS, p.expr(), p.expr()))
+ return nodl(p.pos(), OAS, p.expr(), p.expr())
case OASOP:
- n := npos(p.pos(), nod(OASOP, nil, nil))
+ n := nodl(p.pos(), OASOP, nil, nil)
n.Etype = EType(p.int())
n.Left = p.expr()
if !p.bool() {
// unreachable - mapped to OAS2 case below by exporter
case OAS2:
- n := npos(p.pos(), nod(OAS2, nil, nil))
+ n := nodl(p.pos(), OAS2, nil, nil)
n.List.Set(p.exprList())
n.Rlist.Set(p.exprList())
return n
case ORETURN:
- n := npos(p.pos(), nod(ORETURN, nil, nil))
+ n := nodl(p.pos(), ORETURN, nil, nil)
n.List.Set(p.exprList())
return n
// unreachable - generated by compiler for trampolin routines (not exported)
case OPROC, ODEFER:
- return npos(p.pos(), nod(op, p.expr(), nil))
+ return nodl(p.pos(), op, p.expr(), nil)
case OIF:
markdcl()
- n := npos(p.pos(), nod(OIF, nil, nil))
+ n := nodl(p.pos(), OIF, nil, nil)
n.Ninit.Set(p.stmtList())
n.Left = p.expr()
n.Nbody.Set(p.stmtList())
case OFOR:
markdcl()
- n := npos(p.pos(), nod(OFOR, nil, nil))
+ n := nodl(p.pos(), OFOR, nil, nil)
n.Ninit.Set(p.stmtList())
n.Left, n.Right = p.exprsOrNil()
n.Nbody.Set(p.stmtList())
case ORANGE:
markdcl()
- n := npos(p.pos(), nod(ORANGE, nil, nil))
+ n := nodl(p.pos(), ORANGE, nil, nil)
n.List.Set(p.stmtList())
n.Right = p.expr()
n.Nbody.Set(p.stmtList())
case OSELECT, OSWITCH:
markdcl()
- n := npos(p.pos(), nod(op, nil, nil))
+ n := nodl(p.pos(), op, nil, nil)
n.Ninit.Set(p.stmtList())
n.Left, _ = p.exprsOrNil()
n.List.Set(p.stmtList())
case OXCASE:
markdcl()
- n := npos(p.pos(), nod(OXCASE, nil, nil))
+ n := nodl(p.pos(), OXCASE, nil, nil)
n.Xoffset = int64(block)
n.List.Set(p.exprList())
// TODO(gri) eventually we must declare variables for type switch
// unreachable - mapped to OXFALL case below by exporter
case OXFALL:
- n := npos(p.pos(), nod(OXFALL, nil, nil))
+ n := nodl(p.pos(), OXFALL, nil, nil)
n.Xoffset = int64(block)
return n
if left != nil {
left = newname(left.Sym)
}
- return npos(pos, nod(op, left, nil))
+ return nodl(pos, op, left, nil)
// case OEMPTY:
// unreachable - not emitted by exporter
case OGOTO, OLABEL:
- n := npos(p.pos(), nod(op, newname(p.expr().Sym), nil))
+ n := nodl(p.pos(), op, newname(p.expr().Sym), nil)
n.Sym = dclstack // context, for goto restrictions
return n