]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.typeparams] cmd/compile: allow nil Syms in Sym.Less
authorMatthew Dempsky <mdempsky@google.com>
Thu, 3 Jun 2021 20:05:22 +0000 (13:05 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Thu, 3 Jun 2021 20:52:22 +0000 (20:52 +0000)
Allows sorting interfaces that contain embedded anonymous types.

Fixes #46556.

Change-Id: If19afa1d62432323b2e98957087867afbf3f9097
Reviewed-on: https://go-review.googlesource.com/c/go/+/324812
Trust: Matthew Dempsky <mdempsky@google.com>
Trust: Dan Scales <danscales@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Dan Scales <danscales@google.com>
src/cmd/compile/internal/types/sym.go
test/fixedbugs/issue46556.go [new file with mode: 0644]

index 534cf7e2376d726e9d3cb3568de4b4d7c5ea9125..fb642f52f881418302738b26d3665f8d2040441f 100644 (file)
@@ -110,6 +110,14 @@ func (a *Sym) Less(b *Sym) bool {
                return false
        }
 
+       // Nil before non-nil.
+       if a == nil {
+               return true
+       }
+       if b == nil {
+               return false
+       }
+
        // Exported symbols before non-exported.
        ea := IsExported(a.Name)
        eb := IsExported(b.Name)
diff --git a/test/fixedbugs/issue46556.go b/test/fixedbugs/issue46556.go
new file mode 100644 (file)
index 0000000..b159f61
--- /dev/null
@@ -0,0 +1,16 @@
+// compile
+
+// 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 p
+
+type A = interface{}
+type B interface{}
+
+// Test that embedding both anonymous and defined types is supported.
+type C interface {
+       A
+       B
+}