Initial commit: Go 1.23 release state
This commit is contained in:
59
test/fixedbugs/bug514.go
Normal file
59
test/fixedbugs/bug514.go
Normal file
@@ -0,0 +1,59 @@
|
||||
// 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.
|
||||
|
||||
//go:build cgo
|
||||
|
||||
package main
|
||||
|
||||
import "runtime/cgo"
|
||||
|
||||
type iface interface {
|
||||
Get() int
|
||||
}
|
||||
|
||||
type notInHeap struct {
|
||||
_ cgo.Incomplete
|
||||
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{i: 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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user