The code is the following:
r := hipacheRouter{prefix: "hipache"}
err := r.AddBackend("tip")
c.Assert(err, check.IsNil)
config.Set("hipache:redis-server", "127.0.0.1:6380")
defer config.Unset("hipache:redis-server")
r = hipacheRouter{prefix: "hipache"}
go vet is reporting "assignment copies lock value to r: hipache.hipacheRouter" in the last line. The type hipacheRouter indeed contains a lock:
type hipacheRouter struct {
sync.Mutex
prefix string
pool *redis.Pool
}
But as stated in the code, I'm copying a composite literal to r, so go vet should not complain about that. Changing the variable to r2 and the attribution to a declaration makes vet happy. I've also tried to make the mutex a named field, and it didn't help.
I tried to reproduce it with a simple Go program and failed to do so. I have the impression that there's another violation going on, and vet is reporting lock copying.
It works on Go 1.5.2, and fails on Go 1.6beta1, both on linux_amd64 and darwin_amd64. Details are available on Travis:
The code is the following:
go vet is reporting "assignment copies lock value to r: hipache.hipacheRouter" in the last line. The type hipacheRouter indeed contains a lock:
But as stated in the code, I'm copying a composite literal to r, so go vet should not complain about that. Changing the variable to
r2and the attribution to a declaration makes vet happy. I've also tried to make the mutex a named field, and it didn't help.I tried to reproduce it with a simple Go program and failed to do so. I have the impression that there's another violation going on, and vet is reporting lock copying.
It works on Go 1.5.2, and fails on Go 1.6beta1, both on linux_amd64 and darwin_amd64. Details are available on Travis: