mirror of
https://github.com/golang/go
synced 2024-11-16 22:14:45 -07:00
[dev.unified] cmd/compile/internal/noder: refactor stmtAssign generation
Eliminate some code duplication between assignment statements and variable declarations, so they're easier to extend with implicit conversions. Change-Id: I605cf7817e3cb230f2c4612b777d8023c926e8b2 Reviewed-on: https://go-review.googlesource.com/c/go/+/413515 Reviewed-by: Keith Randall <khr@golang.org> Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by: David Chase <drchase@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
parent
711dacd8cf
commit
82a958a661
@ -1087,10 +1087,7 @@ func (w *writer) stmt1(stmt syntax.Stmt) {
|
||||
w.implicitExpr(stmt, typ, stmt.Rhs)
|
||||
|
||||
default:
|
||||
w.Code(stmtAssign)
|
||||
w.pos(stmt)
|
||||
w.assignList(stmt.Lhs)
|
||||
w.exprList(stmt.Rhs) // TODO(mdempsky): Implicit conversions to Lhs types.
|
||||
w.assignStmt(stmt, stmt.Lhs, stmt.Rhs)
|
||||
}
|
||||
|
||||
case *syntax.BlockStmt:
|
||||
@ -1200,13 +1197,18 @@ func (w *writer) declStmt(decl syntax.Decl) {
|
||||
case *syntax.ConstDecl, *syntax.TypeDecl:
|
||||
|
||||
case *syntax.VarDecl:
|
||||
w.Code(stmtAssign)
|
||||
w.pos(decl)
|
||||
w.assignList(namesAsExpr(decl.NameList))
|
||||
w.exprList(decl.Values) // TODO(mdempsky): Implicit conversions to Lhs types.
|
||||
w.assignStmt(decl, namesAsExpr(decl.NameList), decl.Values)
|
||||
}
|
||||
}
|
||||
|
||||
// assignStmt writes out an assignment for "lhs = rhs".
|
||||
func (w *writer) assignStmt(pos poser, lhs, rhs syntax.Expr) {
|
||||
w.Code(stmtAssign)
|
||||
w.pos(pos)
|
||||
w.assignList(lhs)
|
||||
w.exprList(rhs) // TODO(mdempsky): Implicit conversions to Lhs types.
|
||||
}
|
||||
|
||||
func (w *writer) blockStmt(stmt *syntax.BlockStmt) {
|
||||
w.Sync(pkgbits.SyncBlockStmt)
|
||||
w.openScope(stmt.Pos())
|
||||
|
Loading…
Reference in New Issue
Block a user