// errorcheck

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

// issue 4232
// issue 7200

package p

func f() {
	var a [10]int
	_ = a[-1]  // ERROR "invalid array index -1|index out of bounds"
	_ = a[-1:] // ERROR "invalid slice index -1|index out of bounds"
	_ = a[:-1] // ERROR "invalid slice index -1|index out of bounds"
	_ = a[10]  // ERROR "invalid array index 10|index out of bounds"
	_ = a[9:10]
	_ = a[10:10]
	_ = a[9:12]            // ERROR "invalid slice index 12|index out of bounds"
	_ = a[11:12]           // ERROR "invalid slice index 11|index out of bounds"
	_ = a[1<<100 : 1<<110] // ERROR "overflows int" "invalid slice index 1 << 100|index out of bounds"

	var s []int
	_ = s[-1]  // ERROR "invalid slice index -1|index out of bounds"
	_ = s[-1:] // ERROR "invalid slice index -1|index out of bounds"
	_ = s[:-1] // ERROR "invalid slice index -1|index out of bounds"
	_ = s[10]
	_ = s[9:10]
	_ = s[10:10]
	_ = s[9:12]
	_ = s[11:12]
	_ = s[1<<100 : 1<<110] // ERROR "overflows int" "invalid slice index 1 << 100|index out of bounds"

	const c = "foofoofoof"
	_ = c[-1]  // ERROR "invalid string index -1|index out of bounds"
	_ = c[-1:] // ERROR "invalid slice index -1|index out of bounds"
	_ = c[:-1] // ERROR "invalid slice index -1|index out of bounds"
	_ = c[10]  // ERROR "invalid string index 10|index out of bounds"
	_ = c[9:10]
	_ = c[10:10]
	_ = c[9:12]            // ERROR "invalid slice index 12|index out of bounds"
	_ = c[11:12]           // ERROR "invalid slice index 11|index out of bounds"
	_ = c[1<<100 : 1<<110] // ERROR "overflows int" "invalid slice index 1 << 100|index out of bounds"

	var t string
	_ = t[-1]  // ERROR "invalid string index -1|index out of bounds"
	_ = t[-1:] // ERROR "invalid slice index -1|index out of bounds"
	_ = t[:-1] // ERROR "invalid slice index -1|index out of bounds"
	_ = t[10]
	_ = t[9:10]
	_ = t[10:10]
	_ = t[9:12]
	_ = t[11:12]
	_ = t[1<<100 : 1<<110] // ERROR "overflows int" "invalid slice index 1 << 100|index out of bounds"
}
