3 // Copyright 2009 The Go Authors. All rights reserved.
4 // Use of this source code is governed by a BSD-style
5 // license that can be found in the LICENSE file.
7 // Verify that illegal uses of indirection are caught by the compiler.
13 var m1 *map[string]int
14 var m2 *map[string]int = &m0
15 var m3 map[string]int = map[string]int{"a": 1}
16 var m4 *map[string]int = &m3
31 var b3 []int = []int{1, 2, 3}
35 // this is spaced funny so that
36 // the compiler will print a different
37 // line number for each len call when
38 // it decides there are type errors.
41 len(m1)+ // ERROR "illegal|invalid|must be"
42 len(m2)+ // ERROR "illegal|invalid|must be"
44 len(m4)+ // ERROR "illegal|invalid|must be"
47 len(s1)+ // ERROR "illegal|invalid|must be"
48 len(s2)+ // ERROR "illegal|invalid|must be"
50 len(s4)+ // ERROR "illegal|invalid|must be"
61 len(b1)+ // ERROR "illegal|invalid|must be"
62 len(b2)+ // ERROR "illegal|invalid|must be"
64 len(b4)+ // ERROR "illegal|invalid|must be"
67 cap(b1)+ // ERROR "illegal|invalid|must be"
68 cap(b2)+ // ERROR "illegal|invalid|must be"
70 cap(b4) // ERROR "illegal|invalid|must be"