/
githubmirror
/
go
Обзор
Документация
Войти
/
githubmirror
/
go
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
test/fixedbugs/issue37975.go
54 строки
979 B
Cuong Manh Le
cmd/compile: make isSmallMakeSlice checks slice cap only
01 апр 2020, 00:51
01 апр 2020, 00:51
7b30a2d
Код
Авторство
О чём код?
// run // Copyright 2020 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. // Make sure runtime.panicmakeslice* are called. package main import "strings" func main() { // Test typechecking passes if len is valid // but cap is out of range for len's type. var x byte _ = make([]int, x, 300) capOutOfRange := func() { i := 2 s := make([]int, i, 1) s[0] = 1 } lenOutOfRange := func() { i := -1 s := make([]int, i, 3) s[0] = 1 } tests := []struct { f func() panicStr string }{ {capOutOfRange, "cap out of range"}, {lenOutOfRange, "len out of range"}, } for _, tc := range tests { shouldPanic(tc.panicStr, tc.f) } } func shouldPanic(str string, f func()) { defer func() { err := recover() runtimeErr := err.(error).Error() if !strings.Contains(runtimeErr, str) { panic("got panic " + runtimeErr + ", want " + str) } }() f() }