]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.18] cmd/compile: revert "backport fix for #51840"
authorMatthew Dempsky <mdempsky@google.com>
Thu, 14 Jul 2022 18:25:39 +0000 (18:25 +0000)
committerCherry Mui <cherryyz@google.com>
Wed, 27 Jul 2022 16:54:19 +0000 (16:54 +0000)
This reverts CL 405436 (commit e1b14f53c13c7ab809ea1a33d2ec7f787efdafa8).

Fixes #53883.
Updates #51840.

Change-Id: Ide5a9568a7ae5b449ef154c29b69699a7e4b3f6b
Reviewed-on: https://go-review.googlesource.com/c/go/+/417616
Reviewed-by: David Chase <drchase@google.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>
Reviewed-by: Jenny Rakoczy <jenny@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>

src/cmd/compile/internal/typecheck/stmt.go
test/typeparam/issue51840.go [deleted file]

index 7ab9a1df96e3ea5d211414f7c17f92f815af2030..9a02c1752caf13f6c89e26866e01ba553a767e62 100644 (file)
@@ -127,23 +127,13 @@ func assign(stmt ir.Node, lhs, rhs []ir.Node) {
 
        checkLHS := func(i int, typ *types.Type) {
                lhs[i] = Resolve(lhs[i])
-               if base.Flag.G != 0 || base.Debug.Unified != 0 {
-                       // New logic added in CL 403837 for Go 1.19, which only has -G=3 and unified IR.
-                       if n := lhs[i]; typ != nil && ir.DeclaredBy(n, stmt) && n.Type() == nil {
-                               base.Assertf(typ.Kind() == types.TNIL, "unexpected untyped nil")
+               if n := lhs[i]; typ != nil && ir.DeclaredBy(n, stmt) && n.Name().Ntype == nil {
+                       if typ.Kind() != types.TNIL {
                                n.SetType(defaultType(typ))
-                       }
-               } else {
-                       // Original logic from Go 1.18, which is still needed for -G=0.
-                       if n := lhs[i]; typ != nil && ir.DeclaredBy(n, stmt) && n.Name().Ntype == nil {
-                               if typ.Kind() != types.TNIL {
-                                       n.SetType(defaultType(typ))
-                               } else {
-                                       base.Errorf("use of untyped nil")
-                               }
+                       } else {
+                               base.Errorf("use of untyped nil")
                        }
                }
-
                if lhs[i].Typecheck() == 0 {
                        lhs[i] = AssignExpr(lhs[i])
                }
diff --git a/test/typeparam/issue51840.go b/test/typeparam/issue51840.go
deleted file mode 100644 (file)
index f0ca9d1..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-// compile -G=3
-
-// Copyright 2022 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-type Addr struct {
-       hi uint64
-       lo uint64
-       z  *byte
-}
-
-func EqualMap[M1, M2 ~map[K]V, K, V comparable](m1 M1, m2 M2) bool {
-       for k, v1 := range m1 {
-               if v2, ok := m2[k]; !ok || v1 != v2 {
-                       return false
-               }
-       }
-       return true
-}
-
-type Set[T comparable] map[T]struct{}
-
-func NewSet[T comparable](items ...T) Set[T] {
-       return nil
-}
-
-func (s Set[T]) Equals(other Set[T]) bool {
-       return EqualMap(s, other)
-}
-
-func main() {
-       NewSet[Addr](Addr{0, 0, nil})
-}