Initial commit: Go 1.23 release state
This commit is contained in:
58
test/fixedbugs/issue19168.go
Normal file
58
test/fixedbugs/issue19168.go
Normal file
@@ -0,0 +1,58 @@
|
||||
// errorcheck -0 -l -d=wb
|
||||
|
||||
// Copyright 2017 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 p
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"unsafe"
|
||||
|
||||
reflect2 "reflect"
|
||||
)
|
||||
|
||||
func sink(e interface{})
|
||||
|
||||
func a(hdr *reflect.SliceHeader, p *byte) {
|
||||
hdr.Data = uintptr(unsafe.Pointer(p)) // ERROR "write barrier"
|
||||
}
|
||||
|
||||
func b(hdr *reflect.StringHeader, p *byte) {
|
||||
hdr.Data = uintptr(unsafe.Pointer(p)) // ERROR "write barrier"
|
||||
}
|
||||
|
||||
func c(hdrs *[1]reflect.SliceHeader, p *byte) {
|
||||
hdrs[0].Data = uintptr(unsafe.Pointer(p)) // ERROR "write barrier"
|
||||
}
|
||||
|
||||
func d(hdr *struct{ s reflect.StringHeader }, p *byte) {
|
||||
hdr.s.Data = uintptr(unsafe.Pointer(p)) // ERROR "write barrier"
|
||||
}
|
||||
|
||||
func e(p *byte) (resHeap, resStack string) {
|
||||
sink(&resHeap)
|
||||
|
||||
hdr := (*reflect.StringHeader)(unsafe.Pointer(&resHeap))
|
||||
hdr.Data = uintptr(unsafe.Pointer(p)) // ERROR "write barrier"
|
||||
|
||||
// No write barrier for non-escaping stack vars.
|
||||
hdr = (*reflect.StringHeader)(unsafe.Pointer(&resStack))
|
||||
hdr.Data = uintptr(unsafe.Pointer(p))
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func f(hdr *reflect2.SliceHeader, p *byte) {
|
||||
hdr.Data = uintptr(unsafe.Pointer(p)) // ERROR "write barrier"
|
||||
}
|
||||
|
||||
type SliceHeader struct {
|
||||
Data uintptr
|
||||
}
|
||||
|
||||
func g(hdr *SliceHeader, p *byte) {
|
||||
// No write barrier for lookalike SliceHeader.
|
||||
hdr.Data = uintptr(unsafe.Pointer(p))
|
||||
}
|
||||
Reference in New Issue
Block a user