mirror of
https://github.com/golang/go
synced 2024-09-05 07:54:46 +00:00
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>
This commit is contained in:
parent
641e8bc2c7
commit
bad1fc1265
55
test/fixedbugs/bug514.go
Normal file
55
test/fixedbugs/bug514.go
Normal file
|
@ -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)
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue