]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.regabi] cmd/compile: change CaseStmt.Vars to Var
authorMatthew Dempsky <mdempsky@google.com>
Wed, 23 Dec 2020 14:59:16 +0000 (06:59 -0800)
committerMatthew Dempsky <mdempsky@google.com>
Wed, 23 Dec 2020 20:54:11 +0000 (20:54 +0000)
There's only ever one variable implicitly declared by a CaseStmt. It's
only a slice because we previous used Rlist for this.

Passes toolstash -cmp.

Change-Id: Idf747f3ec6dfbbe4e94d60546ba04a81754df3fe
Reviewed-on: https://go-review.googlesource.com/c/go/+/280012
Trust: Matthew Dempsky <mdempsky@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
src/cmd/compile/internal/escape/escape.go
src/cmd/compile/internal/ir/node_gen.go
src/cmd/compile/internal/ir/stmt.go
src/cmd/compile/internal/noder/noder.go
src/cmd/compile/internal/typecheck/iexport.go
src/cmd/compile/internal/typecheck/iimport.go
src/cmd/compile/internal/typecheck/stmt.go
src/cmd/compile/internal/walk/switch.go

index 338b2e0680e26212d875006481e37ee9606d1a95..7a52ff3b88ae8ffbf36122d8cca6ae5f26bf29b0 100644 (file)
@@ -373,7 +373,7 @@ func (e *escape) stmt(n ir.Node) {
                for _, cas := range n.Cases { // cases
                        cas := cas.(*ir.CaseStmt)
                        if typesw && n.Tag.(*ir.TypeSwitchGuard).Tag != nil {
-                               cv := cas.Vars[0]
+                               cv := cas.Var
                                k := e.dcl(cv) // type switch variables have no ODCL.
                                if cv.Type().HasPointers() {
                                        ks = append(ks, k.dotType(cv.Type(), cas, "switch case"))
index 23205b61feaef31323dd8d7b16044fed3a8430f5..7d3488f3fd89b9f3cf28f4e60fdf8d6098f63a9a 100644 (file)
@@ -230,7 +230,6 @@ func (n *CaseStmt) Format(s fmt.State, verb rune) { FmtNode(n, s, verb) }
 func (n *CaseStmt) copy() Node {
        c := *n
        c.init = c.init.Copy()
-       c.Vars = c.Vars.Copy()
        c.List = c.List.Copy()
        c.Body = c.Body.Copy()
        return &c
@@ -238,7 +237,7 @@ func (n *CaseStmt) copy() Node {
 func (n *CaseStmt) doChildren(do func(Node) error) error {
        var err error
        err = maybeDoList(n.init, err, do)
-       err = maybeDoList(n.Vars, err, do)
+       err = maybeDo(n.Var, err, do)
        err = maybeDoList(n.List, err, do)
        err = maybeDo(n.Comm, err, do)
        err = maybeDoList(n.Body, err, do)
@@ -246,7 +245,7 @@ func (n *CaseStmt) doChildren(do func(Node) error) error {
 }
 func (n *CaseStmt) editChildren(edit func(Node) Node) {
        editList(n.init, edit)
-       editList(n.Vars, edit)
+       n.Var = maybeEdit(n.Var, edit)
        editList(n.List, edit)
        n.Comm = maybeEdit(n.Comm, edit)
        editList(n.Body, edit)
index ad6db436a7f6de4023d68d115b8187bdecba574d..c9988eba5cf82e7c3baebe3516b6c6eef8e983d2 100644 (file)
@@ -176,7 +176,7 @@ func (n *BranchStmt) Sym() *types.Sym { return n.Label }
 // A CaseStmt is a case statement in a switch or select: case List: Body.
 type CaseStmt struct {
        miniStmt
-       Vars Nodes // declared variable for this case in type switch
+       Var  Node  // declared variable for this case in type switch
        List Nodes // list of expressions for switch, early select
        Comm Node  // communication case (Exprs[0]) after select is type-checked
        Body Nodes
index 4789740bd18227787099ecb860aee47938231bf4..68a01612dc33fee9f48c6655d5658e3924b00b5c 100644 (file)
@@ -1217,7 +1217,7 @@ func (p *noder) caseClauses(clauses []*syntax.CaseClause, tswitch *ir.TypeSwitch
                if tswitch != nil && tswitch.Tag != nil {
                        nn := typecheck.NewName(tswitch.Tag.Sym())
                        typecheck.Declare(nn, typecheck.DeclContext)
-                       n.Vars = []ir.Node{nn}
+                       n.Var = nn
                        // keep track of the instances for reporting unused
                        nn.Defn = tswitch
                }
index 365e4315bc5e97bc5673c2361cca482b2fb702ce..4cb943daaf6f05755f348d80f82c067b261371c3 100644 (file)
@@ -1196,7 +1196,7 @@ func (w *exportWriter) caseList(cases []ir.Node, namedTypeSwitch bool) {
                w.pos(cas.Pos())
                w.stmtList(cas.List)
                if namedTypeSwitch {
-                       w.localName(cas.Vars[0].(*ir.Name))
+                       w.localName(cas.Var.(*ir.Name))
                }
                w.stmtList(cas.Body)
        }
index cc8646977d741fe102e58241a5afad5e4dbdc261..221229571c501bc3ff05614512acd7cb6c2123c6 100644 (file)
@@ -780,7 +780,7 @@ func (r *importReader) caseList(switchExpr ir.Node) []ir.Node {
                        // Sym for diagnostics anyway.
                        caseVar := ir.NewNameAt(cas.Pos(), r.ident())
                        Declare(caseVar, DeclContext)
-                       cas.Vars = []ir.Node{caseVar}
+                       cas.Var = caseVar
                        caseVar.Defn = switchExpr
                }
                cas.Body.Set(r.stmtList())
index bf3801eea274c3d428c816584b313ae3abd7f923..133f93e53b35db2e7abfc4de946be1b94a66159b 100644 (file)
@@ -694,7 +694,7 @@ func tcSwitchType(n *ir.SwitchStmt) {
                        ts.add(ncase.Pos(), n1.Type())
                }
 
-               if len(ncase.Vars) != 0 {
+               if ncase.Var != nil {
                        // Assign the clause variable's type.
                        vt := t
                        if len(ls) == 1 {
@@ -707,7 +707,7 @@ func tcSwitchType(n *ir.SwitchStmt) {
                                }
                        }
 
-                       nvar := ncase.Vars[0]
+                       nvar := ncase.Var
                        nvar.SetType(vt)
                        if vt != nil {
                                nvar = AssignExpr(nvar)
@@ -716,7 +716,7 @@ func tcSwitchType(n *ir.SwitchStmt) {
                                nvar.SetTypecheck(1)
                                nvar.SetWalkdef(1)
                        }
-                       ncase.Vars[0] = nvar
+                       ncase.Var = nvar
                }
 
                Stmts(ncase.Body)
index 360086ec79723d47466075dffceb3d3b2ace9c20..7829d933739561f9a3cffe4752dc5efdea150863 100644 (file)
@@ -334,10 +334,7 @@ func walkSwitchType(sw *ir.SwitchStmt) {
        var body ir.Nodes
        for _, ncase := range sw.Cases {
                ncase := ncase.(*ir.CaseStmt)
-               var caseVar ir.Node
-               if len(ncase.Vars) != 0 {
-                       caseVar = ncase.Vars[0]
-               }
+               caseVar := ncase.Var
 
                // For single-type cases with an interface type,
                // we initialize the case variable as part of the type assertion.