// 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 import "sync" type T struct { int; sync.Mutex; } func main() { { var x, y sync.Mutex; x = y; // ERROR "assignment.*Mutex" _ = x; } { var x, y T; x = y; // ERROR "assignment.*Mutex" _ = x; } { var x, y [2]sync.Mutex; x = y; // ERROR "assignment.*Mutex" _ = x; } { var x, y [2]T; x = y; // ERROR "assignment.*Mutex" _ = 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; // ERROR "assignment.*Mutex" *x = y; // ERROR "assignment.*Mutex" _ = x; _ = y; } }