diff options
author | Matthew Dempsky <mdempsky@google.com> | 2022-07-14 18:25:39 +0000 |
---|---|---|
committer | Cherry Mui <cherryyz@google.com> | 2022-07-27 16:54:19 +0000 |
commit | 76ba1a5e5571232e553f0495f2ce6b468c3ebb9d (patch) | |
tree | e1e5d94fc3089239e7be3f64942ce72978e273b5 | |
parent | ed50277fd92dc932a30f57c16ede5ed7554a037a (diff) | |
download | go-76ba1a5e5571232e553f0495f2ce6b468c3ebb9d.tar.gz go-76ba1a5e5571232e553f0495f2ce6b468c3ebb9d.zip |
[release-branch.go1.18] cmd/compile: revert "backport fix for #51840"
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>
-rw-r--r-- | src/cmd/compile/internal/typecheck/stmt.go | 18 | ||||
-rw-r--r-- | test/typeparam/issue51840.go | 36 |
2 files changed, 4 insertions, 50 deletions
diff --git a/src/cmd/compile/internal/typecheck/stmt.go b/src/cmd/compile/internal/typecheck/stmt.go index 7ab9a1df96..9a02c1752c 100644 --- a/src/cmd/compile/internal/typecheck/stmt.go +++ b/src/cmd/compile/internal/typecheck/stmt.go @@ -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 index f0ca9d1a1d..0000000000 --- a/test/typeparam/issue51840.go +++ /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}) -} |