]> Cypherpunks repositories - gostls13.git/commitdiff
test: add test case for CL 340609
authorIan Lance Taylor <iant@golang.org>
Mon, 9 Aug 2021 21:59:56 +0000 (14:59 -0700)
committerIan Lance Taylor <iant@golang.org>
Fri, 13 Aug 2021 20:49:48 +0000 (20:49 +0000)
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>
test/fixedbugs/bug514.go [new file with mode: 0644]

diff --git a/test/fixedbugs/bug514.go b/test/fixedbugs/bug514.go
new file mode 100644 (file)
index 0000000..3fb7f32
--- /dev/null
@@ -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)
+       }
+}