// $G $D/$F.go && $L $F.$A && ./$A.out // Copyright 2010 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. // http://code.google.com/p/go/issues/detail?id=589 package main import "unsafe" var bug = false var minus1 = -1 var big int64 = 10 | 1<<32 var g1 []int func shouldfail(f func(), desc string) { defer func() { recover() }() f() if !bug { println("BUG") bug = true } println("didn't crash: ", desc) } func badlen() { g1 = make([]int, minus1) } func biglen() { g1 = make([]int, big) } func badcap() { g1 = make([]int, 10, minus1) } func badcap1() { g1 = make([]int, 10, 5) } func bigcap() { g1 = make([]int, 10, big) } const ( addrBits = 8*uint(unsafe.Sizeof((*byte)(nil))) sh = addrBits/2 - 2 ) var g2 [][1<