]> Cypherpunks repositories - gostls13.git/commitdiff
Revert "cmd/compile: unique LinkString for renamed, embedded fields"
authorMatthew Dempsky <mdempsky@google.com>
Mon, 10 Jan 2022 19:18:39 +0000 (19:18 +0000)
committerMatthew Dempsky <mdempsky@google.com>
Mon, 10 Jan 2022 20:53:01 +0000 (20:53 +0000)
This reverts CL 372914.

Reason for revert: missing synchronization

Change-Id: I7ebb6de082cebb73741d803ff00e3465bbafab81
Reviewed-on: https://go-review.googlesource.com/c/go/+/377379
Trust: Dan Scales <danscales@google.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
Reviewed-by: Dan Scales <danscales@google.com>
Trust: Matthew Dempsky <mdempsky@google.com>

src/cmd/compile/internal/types/fmt.go
test/fixedbugs/issue50190.go [deleted file]

index 13994834241652c292e9518be134c2c8a5df6e2e..3198a1f53c8674c6234d6d2fcaa1eb402718a36f 100644 (file)
@@ -631,7 +631,6 @@ func fldconv(b *bytes.Buffer, f *Field, verb rune, mode fmtMode, visited map[*Ty
        }
 
        var name string
-       nameSep := " "
        if verb != 'S' {
                s := f.Sym
 
@@ -640,41 +639,9 @@ func fldconv(b *bytes.Buffer, f *Field, verb rune, mode fmtMode, visited map[*Ty
                        s = OrigSym(s)
                }
 
-               if s != nil {
+               if s != nil && f.Embedded == 0 {
                        if funarg != FunargNone {
                                name = fmt.Sprint(f.Nname)
-                       } else if f.Embedded != 0 {
-                               // Using type aliases and embedded fields, it's possible to
-                               // construct types that can't be directly represented as a
-                               // type literal. For example, given "type Int = int" (#50190),
-                               // it would be incorrect to format "struct{ Int }" as either
-                               // "struct{ int }" or "struct{ Int int }", because those each
-                               // represent other, distinct types.
-                               //
-                               // So for the purpose of LinkString (i.e., fmtTypeID), we use
-                               // the non-standard syntax "struct{ Int = int }" to represent
-                               // embedded fields that have been renamed through the use of
-                               // type aliases.
-                               if mode == fmtTypeID {
-                                       // Compute styp, the symbol that would normally be used as
-                                       // the field name when embedding f.Type.
-                                       // TODO(mdempsky): Check for other occurences of this logic
-                                       // and deduplicate.
-                                       typ := f.Type
-                                       if typ.Sym() == nil && typ.IsPtr() {
-                                               typ = typ.Elem()
-                                       }
-                                       styp := typ.Sym()
-                                       if styp != nil && IsExported(styp.Name) {
-                                               styp = LocalPkg.Lookup(styp.Name)
-                                       }
-
-                                       // If embedded field was renamed, use syntax extension.
-                                       if s != styp {
-                                               name = sconv(s, 0, mode)
-                                               nameSep = " = "
-                                       }
-                               }
                        } else if verb == 'L' {
                                name = s.Name
                                if name == ".F" {
@@ -691,7 +658,7 @@ func fldconv(b *bytes.Buffer, f *Field, verb rune, mode fmtMode, visited map[*Ty
 
        if name != "" {
                b.WriteString(name)
-               b.WriteString(nameSep)
+               b.WriteString(" ")
        }
 
        if f.IsDDD() {
diff --git a/test/fixedbugs/issue50190.go b/test/fixedbugs/issue50190.go
deleted file mode 100644 (file)
index 01ff6ea..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-// run
-
-// Copyright 2021 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 int float32
-
-type Int = int
-
-type A = struct{ int }
-type B = struct{ Int }
-
-func main() {
-       var x, y interface{} = A{}, B{}
-       if x == y {
-               panic("FAIL")
-       }
-}