1// errorcheck 2 3// Copyright 2011 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. 6 7// Verify that illegal composite literals are detected. 8// Does not compile. 9 10package main 11 12var m map[int][3]int 13 14func f() [3]int 15 16func fp() *[3]int 17 18var mp map[int]*[3]int 19 20var ( 21 _ = [3]int{1, 2, 3}[:] // ERROR "slice of unaddressable value" 22 _ = m[0][:] // ERROR "slice of unaddressable value" 23 _ = f()[:] // ERROR "slice of unaddressable value" 24 25 // these are okay because they are slicing a pointer to an array 26 _ = (&[3]int{1, 2, 3})[:] 27 _ = mp[0][:] 28 _ = fp()[:] 29) 30 31type T struct { 32 i int 33 f float64 34 s string 35 next *T 36} 37 38var ( 39 _ = &T{0, 0, "", nil} // ok 40 _ = &T{i: 0, f: 0, s: "", next: {}} // ERROR "missing type in composite literal|omit types within composite literal" 41 _ = &T{0, 0, "", {}} // ERROR "missing type in composite literal|omit types within composite literal" 42) 43