mirror of
https://github.com/golang/go
synced 2024-11-15 05:50:37 -07:00
40 lines
688 B
Go
40 lines
688 B
Go
|
// errorcheck
|
||
|
|
||
|
// Copyright 2023 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 "unsafe"
|
||
|
|
||
|
type E [1 << 30]complex128
|
||
|
|
||
|
var a [1 << 30]E
|
||
|
var _ = unsafe.Sizeof(a) // ERROR "too large"
|
||
|
|
||
|
var s struct {
|
||
|
_ [1 << 30]E
|
||
|
x int
|
||
|
}
|
||
|
var _ = unsafe.Offsetof(s.x) // ERROR "too large"
|
||
|
|
||
|
// Test case from issue (modified so it also triggers on 32-bit platforms).
|
||
|
|
||
|
type A [1]int
|
||
|
type S struct {
|
||
|
x A
|
||
|
y [1 << 30]A
|
||
|
z [1 << 30]struct{}
|
||
|
}
|
||
|
type T [1 << 30][1 << 30]S
|
||
|
|
||
|
func _() {
|
||
|
var a A
|
||
|
var s S
|
||
|
var t T
|
||
|
_ = unsafe.Sizeof(a)
|
||
|
_ = unsafe.Sizeof(s)
|
||
|
_ = unsafe.Sizeof(t) // ERROR "too large"
|
||
|
}
|