1
0
mirror of https://github.com/golang/go synced 2024-11-08 08:36:20 -07:00
go/test/fixedbugs/issue51733.go
Cuong Manh Le 64b260dbde test: use cgo.Incomplete instead of go:notinheap for "run" tests
Same as CL 421880, but for test directory.

Updates #46731

Change-Id: If8d18df013a6833adcbd40acc1a721bbc23ca6b2
Reviewed-on: https://go-review.googlesource.com/c/go/+/421881
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Heschi Kreinick <heschi@google.com>
Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: Keith Randall <khr@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
2022-09-01 00:42:27 +00:00

35 lines
619 B
Go

// run
// Copyright 2022 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 (
"log"
"runtime/cgo"
"unsafe"
)
type S struct{ _ cgo.Incomplete }
func main() {
p := (*S)(unsafe.Pointer(uintptr(0x8000)))
var v any = p
p2 := v.(*S)
if p != p2 {
log.Fatalf("%p != %p", unsafe.Pointer(p), unsafe.Pointer(p2))
}
p2 = typeAssert[*S](v)
if p != p2 {
log.Fatalf("%p != %p from typeAssert", unsafe.Pointer(p), unsafe.Pointer(p2))
}
}
func typeAssert[T any](v any) T {
return v.(T)
}