// run

// 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.

// https://golang.org/issue/589

package main

var bug = false

var minus1 = -1
var five = 5
var big int64 = 10 | 1<<32

type block [1<<19]byte

var g1 []block

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([]block, minus1)
}

func biglen() {
	g1 = make([]block, big)
}

func badcap() {
	g1 = make([]block, 10, minus1)
}

func badcap1() {
	g1 = make([]block, 10, five)
}

func bigcap() {
	g1 = make([]block, 10, big)
}

var g3 map[block]block
func badmapcap() {
	g3 = make(map[block]block, minus1)
}

func bigmapcap() {
	g3 = make(map[block]block, big)
}

type cblock [1<<16-1]byte

var g4 chan cblock
func badchancap() {
	g4 = make(chan cblock, minus1)
}

func bigchancap() {
	g4 = make(chan cblock, big)
}

func overflowchan() {
	g4 = make(chan cblock, 1<<30)
}

func main() {
	shouldfail(badlen, "badlen")
	shouldfail(biglen, "biglen")
	shouldfail(badcap, "badcap")
	shouldfail(badcap1, "badcap1")
	shouldfail(bigcap, "bigcap")
	shouldfail(badmapcap, "badmapcap")
	shouldfail(bigmapcap, "bigmapcap")
	shouldfail(badchancap, "badchancap")
	shouldfail(bigchancap, "bigchancap")
	shouldfail(overflowchan, "overflowchan")
}
