// run

// Copyright 2014 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 "unsafe"

var (
	hello = "hello"
	bytes = []byte{1, 2, 3, 4, 5}
	ints  = []int32{1, 2, 3, 4, 5}

	five = 5

	ok = true
)

func notOK() {
	if ok {
		println("BUG:")
		ok = false
	}
}

func checkString(desc, s string) {
	p1 := *(*uintptr)(unsafe.Pointer(&s))
	p2 := *(*uintptr)(unsafe.Pointer(&hello))
	if p1-p2 >= 5 {
		notOK()
		println("string", desc, "has invalid base")
	}
}

func checkBytes(desc string, s []byte) {
	p1 := *(*uintptr)(unsafe.Pointer(&s))
	p2 := *(*uintptr)(unsafe.Pointer(&bytes))
	if p1-p2 >= 5 {
		println("byte slice", desc, "has invalid base")
	}
}

func checkInts(desc string, s []int32) {
	p1 := *(*uintptr)(unsafe.Pointer(&s))
	p2 := *(*uintptr)(unsafe.Pointer(&ints))
	if p1-p2 >= 5*4 {
		println("int slice", desc, "has invalid base")
	}
}

func main() {
	{
		x := hello
		checkString("x", x)
		checkString("x[5:]", x[5:])
		checkString("x[five:]", x[five:])
		checkString("x[5:five]", x[5:five])
		checkString("x[five:5]", x[five:5])
		checkString("x[five:five]", x[five:five])
		checkString("x[1:][2:][2:]", x[1:][2:][2:])
		y := x[4:]
		checkString("y[1:]", y[1:])
	}
	{
		x := bytes
		checkBytes("x", x)
		checkBytes("x[5:]", x[5:])
		checkBytes("x[five:]", x[five:])
		checkBytes("x[5:five]", x[5:five])
		checkBytes("x[five:5]", x[five:5])
		checkBytes("x[five:five]", x[five:five])
		checkBytes("x[1:][2:][2:]", x[1:][2:][2:])
		y := x[4:]
		checkBytes("y[1:]", y[1:])
	}
	{
		x := ints
		checkInts("x", x)
		checkInts("x[5:]", x[5:])
		checkInts("x[five:]", x[five:])
		checkInts("x[5:five]", x[5:five])
		checkInts("x[five:5]", x[five:5])
		checkInts("x[five:five]", x[five:five])
		checkInts("x[1:][2:][2:]", x[1:][2:][2:])
		y := x[4:]
		checkInts("y[1:]", y[1:])
	}
}
