|  | // errorcheck | 
|  |  | 
|  | // 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. | 
|  |  | 
|  | // Verify simple assignment errors are caught by the compiler. | 
|  | // Does not compile. | 
|  |  | 
|  | package main | 
|  |  | 
|  | import "sync" | 
|  |  | 
|  | type T struct { | 
|  | int | 
|  | sync.Mutex | 
|  | } | 
|  |  | 
|  | func main() { | 
|  | { | 
|  | var x, y sync.Mutex | 
|  | x = y // ok | 
|  | _ = x | 
|  | } | 
|  | { | 
|  | var x, y T | 
|  | x = y // ok | 
|  | _ = x | 
|  | } | 
|  | { | 
|  | var x, y [2]sync.Mutex | 
|  | x = y // ok | 
|  | _ = x | 
|  | } | 
|  | { | 
|  | var x, y [2]T | 
|  | x = y // ok | 
|  | _ = x | 
|  | } | 
|  | { | 
|  | x := sync.Mutex{0, 0} // ERROR "assignment.*Mutex" | 
|  | _ = x | 
|  | } | 
|  | { | 
|  | x := sync.Mutex{key: 0} // ERROR "(unknown|assignment).*Mutex" | 
|  | _ = x | 
|  | } | 
|  | { | 
|  | x := &sync.Mutex{} // ok | 
|  | var y sync.Mutex   // ok | 
|  | y = *x             // ok | 
|  | *x = y             // ok | 
|  | _ = x | 
|  | _ = y | 
|  | } | 
|  | { | 
|  | var x = 1 | 
|  | { | 
|  | x, x := 2, 3 // ERROR "x repeated on left side of :=" | 
|  | _ = x | 
|  | } | 
|  | _ = x | 
|  | } | 
|  | { | 
|  | a, a := 1, 2 // ERROR "a repeated on left side of :=" | 
|  | _ = a | 
|  | } | 
|  | } |