/
githubmirror
/
go
Обзор
Документация
Войти
/
githubmirror
/
go
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
test/fixedbugs/issue60601.go
50 строк
862 B
Cuong Manh Le
cmd/compile: do not report division by error during typecheck
15 июн 2023, 21:41
15 июн 2023, 21:41
60e6afb
Код
Авторство
О чём код?
// run // 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 main import ( "strings" "unsafe" ) func shift[T any]() int64 { return 1 << unsafe.Sizeof(*new(T)) } func div[T any]() uintptr { return 1 / unsafe.Sizeof(*new(T)) } func add[T any]() int64 { return 1<<63 - 1 + int64(unsafe.Sizeof(*new(T))) } func main() { shift[[62]byte]() shift[[63]byte]() shift[[64]byte]() shift[[100]byte]() shift[[1e6]byte]() add[[1]byte]() shouldPanic("divide by zero", func() { div[[0]byte]() }) } func shouldPanic(str string, f func()) { defer func() { err := recover() if err == nil { panic("did not panic") } s := err.(error).Error() if !strings.Contains(s, str) { panic("got panic " + s + ", want " + str) } }() f() }