// 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;
	}		
}
