]> Cypherpunks repositories - gostls13.git/commitdiff
test: add test that was miscompiled by gccgo
authorIan Lance Taylor <iant@golang.org>
Thu, 11 Nov 2021 00:06:18 +0000 (16:06 -0800)
committerIan Lance Taylor <iant@golang.org>
Thu, 11 Nov 2021 04:02:33 +0000 (04:02 +0000)
For #49512

Change-Id: Ic08652a4ec611b27150bf10b1118c1395715e5d0
Reviewed-on: https://go-review.googlesource.com/c/go/+/363156
Trust: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Than McIntosh <thanm@google.com>
test/fixedbugs/issue49512.go [new file with mode: 0644]

diff --git a/test/fixedbugs/issue49512.go b/test/fixedbugs/issue49512.go
new file mode 100644 (file)
index 0000000..597aec8
--- /dev/null
@@ -0,0 +1,54 @@
+// 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 S struct{
+       m1Called, m2Called bool
+}
+
+func (s *S) M1(int) (int, int) {
+       s.m1Called = true
+       return 0, 0
+}
+
+func (s *S) M2(int) (int, int) {
+       s.m2Called = true
+       return 0, 0
+}
+
+type C struct {
+       calls []func(int) (int, int)
+}
+
+func makeC() Funcs {
+       return &C{}
+}
+
+func (c *C) Add(fn func(int) (int, int)) Funcs {
+       c.calls = append(c.calls, fn)
+       return c
+}
+
+func (c *C) Call() {
+       for _, fn := range c.calls {
+               fn(0)
+       }
+}
+
+type Funcs interface {
+       Add(func(int) (int, int)) Funcs
+       Call()
+}
+
+func main() {
+       s := &S{}
+       c := makeC().Add(s.M1).Add(s.M2)
+       c.Call()
+       if !s.m1Called || !s.m2Called {
+               panic("missed method call")
+       }
+}