1// run
2
3// Copyright 2012 The Go Authors. All rights reserved.
4// Use of this source code is governed by a BSD-style
5// license that can be found in the LICENSE file.
6
7// Used to crash generating hash and == functions for struct
8// with leading _ field.  Issue 3607.
9
10package main
11
12type T struct {
13	_ int
14	X interface{}
15	_ string
16	Y float64
17}
18
19func main() {
20	m := map[T]int{}
21	m[T{X: 1, Y: 2}] = 1
22	m[T{X: 2, Y: 3}] = 2
23	m[T{X: 1, Y: 2}] = 3  // overwrites first entry
24	if len(m) != 2 {
25		println("BUG")
26	}
27}
28