From 82a958a661660fed6f126e41884a8c75fb983902 Mon Sep 17 00:00:00 2001 From: Matthew Dempsky Date: Tue, 21 Jun 2022 11:49:27 -0700 Subject: [PATCH] [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 Run-TryBot: Matthew Dempsky Reviewed-by: David Chase TryBot-Result: Gopher Robot --- src/cmd/compile/internal/noder/writer.go | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/cmd/compile/internal/noder/writer.go b/src/cmd/compile/internal/noder/writer.go index 5160cfaac68..942bab4b2bf 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())