aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/noder
diff options
context:
space:
mode:
authorMatthew Dempsky <mdempsky@google.com>2022-06-21 11:49:27 -0700
committerMatthew Dempsky <mdempsky@google.com>2022-06-23 21:55:08 +0000
commit82a958a661660fed6f126e41884a8c75fb983902 (patch)
tree68d9858a985e7ce776d2a0a1521b30238c3b5b8e /src/cmd/compile/internal/noder
parent711dacd8cf52d0c06624c4af3563d3b728c50b57 (diff)
downloadgo-82a958a661660fed6f126e41884a8c75fb983902.tar.xz
[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>
Diffstat (limited to 'src/cmd/compile/internal/noder')
-rw-r--r--src/cmd/compile/internal/noder/writer.go18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/cmd/compile/internal/noder/writer.go b/src/cmd/compile/internal/noder/writer.go
index 5160cfaac6..942bab4b2b 100644
--- a/src/cmd/compile/internal/noder/writer.go
+++ b/src/cmd/compile/internal/noder/writer.go
@@ -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())