diff options
| author | Matthew Dempsky <mdempsky@google.com> | 2022-06-21 11:49:27 -0700 |
|---|---|---|
| committer | Matthew Dempsky <mdempsky@google.com> | 2022-06-23 21:55:08 +0000 |
| commit | 82a958a661660fed6f126e41884a8c75fb983902 (patch) | |
| tree | 68d9858a985e7ce776d2a0a1521b30238c3b5b8e /src/cmd/compile/internal/noder | |
| parent | 711dacd8cf52d0c06624c4af3563d3b728c50b57 (diff) | |
| download | go-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.go | 18 |
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()) |
