From 76ba1a5e5571232e553f0495f2ce6b468c3ebb9d Mon Sep 17 00:00:00 2001 From: Matthew Dempsky Date: Thu, 14 Jul 2022 18:25:39 +0000 Subject: [PATCH] [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 Run-TryBot: Cherry Mui Reviewed-by: Jenny Rakoczy TryBot-Result: Gopher Robot --- src/cmd/compile/internal/typecheck/stmt.go | 18 +++-------- test/typeparam/issue51840.go | 36 ---------------------- 2 files changed, 4 insertions(+), 50 deletions(-) delete mode 100644 test/typeparam/issue51840.go 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}) -} -- 2.50.0