//gofmt -s

// Test cases for slice expression simplification.
// Because of a dot import, these slices must remain untouched.
package p

import . "math"

var (
	a [10]byte
	b [20]float32
	s []int
	t struct {
		s []byte
	}

	_ = a[0:]
	_ = a[1:10]
	_ = a[2:len(a)]
	_ = a[3:(len(a))]
	_ = a[len(a) : len(a)-1]
	_ = a[0:len(b)]

	_ = a[:]
	_ = a[:10]
	_ = a[:len(a)]
	_ = a[:(len(a))]
	_ = a[:len(a)-1]
	_ = a[:len(b)]

	_ = s[0:]
	_ = s[1:10]
	_ = s[2:len(s)]
	_ = s[3:(len(s))]
	_ = s[len(a) : len(s)-1]
	_ = s[0:len(b)]

	_ = s[:]
	_ = s[:10]
	_ = s[:len(s)]
	_ = s[:(len(s))]
	_ = s[:len(s)-1]
	_ = s[:len(b)]

	_ = t.s[0:]
	_ = t.s[1:10]
	_ = t.s[2:len(t.s)]
	_ = t.s[3:(len(t.s))]
	_ = t.s[len(a) : len(t.s)-1]
	_ = t.s[0:len(b)]

	_ = t.s[:]
	_ = t.s[:10]
	_ = t.s[:len(t.s)]
	_ = t.s[:(len(t.s))]
	_ = t.s[:len(t.s)-1]
	_ = t.s[:len(b)]
)

func _() {
	s := s[0:len(s)]
	_ = s
}
