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