// errchk $G -e $D/$F.go

// Copyright 2009 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

var m0 map[string]int
var m1 *map[string]int
var m2 *map[string]int = &m0
var m3 map[string]int = map[string]int{"a": 1}
var m4 *map[string]int = &m3

var s0 string
var s1 *string
var s2 *string = &s0
var s3 string = "a"
var s4 *string = &s3

var a0 [10]int
var a1 *[10]int
var a2 *[10]int = &a0

var b0 []int
var b1 *[]int
var b2 *[]int = &b0
var b3 []int = []int{1, 2, 3}
var b4 *[]int = &b3

func f()
{
	// this is spaced funny so that
	// the compiler will print a different
	// line number for each len call when
	// it decides there are type errors.
	x :=
		len(m0)+
		len(m1)+	// ERROR "illegal"
		len(m2)+	// ERROR "illegal"
		len(m3)+
		len(m4)+	// ERROR "illegal"

		len(s0)+
		len(s1)+	// ERROR "illegal"
		len(s2)+	// ERROR "illegal"
		len(s3)+
		len(s4)+	// ERROR "illegal"

		len(a0)+
		len(a1)+
		len(a2)+

		cap(a0)+
		cap(a1)+
		cap(a2)+

		len(b0)+
		len(b1)+	// ERROR "illegal"
		len(b2)+	// ERROR "illegal"
		len(b3)+
		len(b4)+	// ERROR "illegal"

		cap(b0)+
		cap(b1)+	// ERROR "illegal"
		cap(b2)+	// ERROR "illegal"
		cap(b3)+
		cap(b4);	// ERROR "illegal"
}
