aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2021-08-09 14:59:56 -0700
committerIan Lance Taylor <iant@golang.org>2021-08-13 20:49:48 +0000
commitbad1fc126536f14fd6f00a93e1b76320c1510bf2 (patch)
tree399904d96194b967712672713b3a384acf3c2d57 /test
parent641e8bc2c7166135d3a63ed1a71a3aa495bc3c5d (diff)
downloadgo-bad1fc126536f14fd6f00a93e1b76320c1510bf2.tar.gz
go-bad1fc126536f14fd6f00a93e1b76320c1510bf2.zip
test: add test case for CL 340609
The first version of CL 340609 for gofrontend passed all existing tests, but not this one. For #42076 Change-Id: I6491e2f186091bdae140b7f7befa511806a6478a Reviewed-on: https://go-review.googlesource.com/c/go/+/340950 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>
Diffstat (limited to 'test')
-rw-r--r--test/fixedbugs/bug514.go55
1 files changed, 55 insertions, 0 deletions
diff --git a/test/fixedbugs/bug514.go b/test/fixedbugs/bug514.go
new file mode 100644
index 0000000000..3fb7f32a30
--- /dev/null
+++ b/test/fixedbugs/bug514.go
@@ -0,0 +1,55 @@
+// 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 iface interface {
+ Get() int
+}
+
+//go:notinheap
+type notInHeap struct {
+ i int
+}
+
+type myInt struct {
+ f *notInHeap
+}
+
+func (mi myInt) Get() int {
+ return int(mi.f.i)
+}
+
+type embed struct {
+ *myInt
+}
+
+var val = 1234
+
+var valNotInHeap = notInHeap{val}
+
+func main() {
+ i := val
+ check(i)
+ mi := myInt{f: &valNotInHeap}
+ check(mi.Get())
+ ifv := iface(mi)
+ check(ifv.Get())
+ ifv = iface(&mi)
+ check(ifv.Get())
+ em := embed{&mi}
+ check(em.Get())
+ ifv = em
+ check(ifv.Get())
+ ifv = &em
+ check(ifv.Get())
+}
+
+func check(v int) {
+ if v != val {
+ panic(v)
+ }
+}