return nil
}
- // TODO(gri) check for regular functions only
- // if name.Sym.Name == "init" {
- // name = renameinit()
- // if params != nil || result != nil {
- // p.error("func init must have no arguments and no return values")
- // }
- // }
-
- // if localpkg.Name == "main" && name.Name == "main" {
- // if params != nil || result != nil {
- // p.error("func main must have no arguments and no return values")
- // }
- // }
-
f.Name = p.name()
f.Type = p.funcType()
if p.tok == _Lbrace {
checkBranches(f.Body, p.errh)
}
}
-
f.Pragma = p.pragma
- // TODO(gri) deal with function properties
- // if noescape && body != nil {
- // p.error("can only use //go:noescape with external func implementations")
- // }
-
return f
}
return s
}
-// TODO(gri) This function is now so heavily influenced by the keyword that
-// it may not make sense anymore to combine all three cases. It
-// may be simpler to just split it up for each statement kind.
func (p *parser) header(keyword token) (init SimpleStmt, cond Expr, post SimpleStmt) {
p.want(keyword)