]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: change ir.NewCompLitExpr from Ntype to *types.Type
authorMatthew Dempsky <mdempsky@google.com>
Tue, 3 May 2022 01:02:22 +0000 (18:02 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Thu, 5 May 2022 18:48:32 +0000 (18:48 +0000)
All callers were already using TypeNode to get an Ntype anyway, so
just push the TypeNode constructor down into NewCompLitExpr. Prep
refactoring for next CL to remove the Ntype field.

Change-Id: I671935afca707aaab11d1c46e39902bd37a485ba
Reviewed-on: https://go-review.googlesource.com/c/go/+/403840
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
src/cmd/compile/internal/ir/expr.go
src/cmd/compile/internal/noder/reader.go
src/cmd/compile/internal/noder/transform.go
src/cmd/compile/internal/typecheck/func.go
src/cmd/compile/internal/typecheck/iimport.go
src/cmd/compile/internal/typecheck/typecheck.go
src/cmd/compile/internal/walk/closure.go
src/cmd/compile/internal/walk/expr.go

index 4f1f582fa1f0326617d39e4ea013d8b8e9fa824c..78b084341a24b94a531eaf2fc841de0b66fbeb12 100644 (file)
@@ -200,11 +200,13 @@ type CompLitExpr struct {
        Len int64
 }
 
-func NewCompLitExpr(pos src.XPos, op Op, typ Ntype, list []Node) *CompLitExpr {
-       n := &CompLitExpr{Ntype: typ}
+func NewCompLitExpr(pos src.XPos, op Op, typ *types.Type, list []Node) *CompLitExpr {
+       n := &CompLitExpr{List: list}
        n.pos = pos
        n.SetOp(op)
-       n.List = list
+       if typ != nil {
+               n.Ntype = TypeNode(typ)
+       }
        n.orig = n
        return n
 }
index b95dc23edb6461cd853e8438d25d00897b95e9d4..9474568b27806d19349417866979d09269137c1c 100644 (file)
@@ -1728,7 +1728,7 @@ func (r *reader) compLit() ir.Node {
                *elemp = wrapName(r.pos(), r.expr())
        }
 
-       lit := typecheck.Expr(ir.NewCompLitExpr(pos, ir.OCOMPLIT, ir.TypeNode(typ), elems))
+       lit := typecheck.Expr(ir.NewCompLitExpr(pos, ir.OCOMPLIT, typ, elems))
        if typ0.IsPtr() {
                lit = typecheck.Expr(typecheck.NodAddrAt(pos, lit))
                lit.SetType(typ0)
index 43fd73fdbc9ca229b3bad606dcfc5b74098a55d8..6b17ab283a1084b11073f662eda00ae17004c789 100644 (file)
@@ -74,8 +74,7 @@ func stringtoruneslit(n *ir.ConvExpr) ir.Node {
                i++
        }
 
-       nn := ir.NewCompLitExpr(base.Pos, ir.OCOMPLIT, ir.TypeNode(n.Type()), nil)
-       nn.List = list
+       nn := ir.NewCompLitExpr(base.Pos, ir.OCOMPLIT, n.Type(), list)
        typed(n.Type(), nn)
        // Need to transform the OCOMPLIT.
        return transformCompLit(nn)
index 0d9b18bc374f2742b2d1c0b5a9dbeaf097857f73..9d55d73592125e920a574a3f05478e229b4c940d 100644 (file)
@@ -23,7 +23,7 @@ func MakeDotArgs(pos src.XPos, typ *types.Type, args []ir.Node) ir.Node {
                n.SetType(typ)
        } else {
                args = append([]ir.Node(nil), args...)
-               lit := ir.NewCompLitExpr(pos, ir.OCOMPLIT, ir.TypeNode(typ), args)
+               lit := ir.NewCompLitExpr(pos, ir.OCOMPLIT, typ, args)
                lit.SetImplicit(true)
                n = lit
        }
index 7ce613ca972c22502425d75f3c31ddb7e8447375..cee952b6592233ecfa238cdc7d6bd49fd630b691 100644 (file)
@@ -1417,7 +1417,7 @@ func (r *importReader) node() ir.Node {
        case ir.OCOMPLIT:
                pos := r.pos()
                t := r.typ()
-               n := ir.NewCompLitExpr(pos, ir.OCOMPLIT, ir.TypeNode(t), r.exprList())
+               n := ir.NewCompLitExpr(pos, ir.OCOMPLIT, t, r.exprList())
                n.SetType(t)
                return n
 
@@ -1425,7 +1425,7 @@ func (r *importReader) node() ir.Node {
                pos := r.pos()
                typ := r.typ()
                list := r.exprList()
-               n := ir.NewCompLitExpr(pos, op, ir.TypeNode(typ), list)
+               n := ir.NewCompLitExpr(pos, op, typ, list)
                n.SetType(typ)
                if op == ir.OSLICELIT {
                        n.Len = int64(r.uint64())
index 2eb9e6d718ceb6eb21fdb5166b288b510a0ac3a5..6e61d9f3094e7fe23a6263940112f0f06d6258f3 100644 (file)
@@ -1624,9 +1624,7 @@ func stringtoruneslit(n *ir.ConvExpr) ir.Node {
                i++
        }
 
-       nn := ir.NewCompLitExpr(base.Pos, ir.OCOMPLIT, ir.TypeNode(n.Type()), nil)
-       nn.List = l
-       return Expr(nn)
+       return Expr(ir.NewCompLitExpr(base.Pos, ir.OCOMPLIT, n.Type(), l))
 }
 
 func checkmake(t *types.Type, arg string, np *ir.Node) bool {
index f7bd2e0e073e212a038bd93b2094d81d707dbdbb..ee9b24d09db9d623606e78f7535560b8fadef4b8 100644 (file)
@@ -120,7 +120,7 @@ func walkClosure(clo *ir.ClosureExpr, init *ir.Nodes) ir.Node {
 
        typ := typecheck.ClosureType(clo)
 
-       clos := ir.NewCompLitExpr(base.Pos, ir.OCOMPLIT, ir.TypeNode(typ), nil)
+       clos := ir.NewCompLitExpr(base.Pos, ir.OCOMPLIT, typ, nil)
        clos.SetEsc(clo.Esc())
        clos.List = append([]ir.Node{ir.NewUnaryExpr(base.Pos, ir.OCFUNC, clofn.Nname)}, closureArgs(clo)...)
        for i, value := range clos.List {
@@ -186,7 +186,7 @@ func walkMethodValue(n *ir.SelectorExpr, init *ir.Nodes) ir.Node {
 
        typ := typecheck.MethodValueType(n)
 
-       clos := ir.NewCompLitExpr(base.Pos, ir.OCOMPLIT, ir.TypeNode(typ), nil)
+       clos := ir.NewCompLitExpr(base.Pos, ir.OCOMPLIT, typ, nil)
        clos.SetEsc(n.Esc())
        clos.List = []ir.Node{ir.NewUnaryExpr(base.Pos, ir.OCFUNC, methodValueWrapper(n)), n.X}
 
index 26a23c4d0910cb0a0532319476b5b87857f524ba..c5dd344315f8bebfdf3501a5acffc1d030473d8f 100644 (file)
@@ -480,7 +480,7 @@ func walkAddString(n *ir.AddStringExpr, init *ir.Nodes) ir.Node {
 
                t := types.NewSlice(types.Types[types.TSTRING])
                // args[1:] to skip buf arg
-               slice := ir.NewCompLitExpr(base.Pos, ir.OCOMPLIT, ir.TypeNode(t), args[1:])
+               slice := ir.NewCompLitExpr(base.Pos, ir.OCOMPLIT, t, args[1:])
                slice.Prealloc = n.Prealloc
                args = []ir.Node{buf, slice}
                slice.SetEsc(ir.EscNone)