Skip to content

Commit

Permalink
[dev.unified] cmd/compile/internal/noder: refactor stmtAssign generation
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
mdempsky committed Jun 23, 2022
1 parent 711dacd commit 82a958a
Showing 1 changed file with 10 additions and 8 deletions.
18 changes: 10 additions & 8 deletions src/cmd/compile/internal/noder/writer.go
Expand Up @@ -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:
Expand Down Expand Up @@ -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())
Expand Down

0 comments on commit 82a958a

Please sign in to comment.