]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: skip diag error in checkassign if one was emitted
authorCuong Manh Le <cuong.manhle.vn@gmail.com>
Fri, 19 Feb 2021 06:47:14 +0000 (13:47 +0700)
committerCuong Manh Le <cuong.manhle.vn@gmail.com>
Thu, 4 Mar 2021 06:36:07 +0000 (06:36 +0000)
While at it, also remove checkassignlist, which is not used.

For #43311

Change-Id: Ie7ed81f68080d8881fca6035da64a9755f2cb555
Reviewed-on: https://go-review.googlesource.com/c/go/+/294032
Trust: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/internal/typecheck/typecheck.go

index 278e64fc61a4cc9c307aaaad34ca9f2ab5643df3..e7d4e81672d7c9517f510b4b87a37ccc936910e6 100644 (file)
@@ -1612,6 +1612,10 @@ func checkassign(stmt ir.Node, n ir.Node) {
                return
        }
 
+       defer n.SetType(nil)
+       if n.Diag() {
+               return
+       }
        switch {
        case n.Op() == ir.ODOT && n.(*ir.SelectorExpr).X.Op() == ir.OINDEXMAP:
                base.Errorf("cannot assign to struct field %v in map", n)
@@ -1622,13 +1626,6 @@ func checkassign(stmt ir.Node, n ir.Node) {
        default:
                base.Errorf("cannot assign to %v", n)
        }
-       n.SetType(nil)
-}
-
-func checkassignlist(stmt ir.Node, l ir.Nodes) {
-       for _, n := range l {
-               checkassign(stmt, n)
-       }
 }
 
 func checkassignto(src *types.Type, dst ir.Node) {