// errorcheck

// Copyright 2018 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.

// Issue 23732: Give better details about which struct
// initializer has the wrong number of values.

package main

type Foo struct {
	A int
	B int
	C interface{}
	Bar
}

type Bar struct {
	A string
}

func main() {
	_ = Foo{
		1,
		2,
		3, // ERROR "too few values in Foo{...}"
	}

	_ = Foo{
		1,
		2,
		3,
		Bar{"A", "B"}, // ERROR "too many values in Bar{...}"
	}

	_ = Foo{
		1,
		2,
		Bar{"A", "B"}, // ERROR "too many values in Bar{...}" "too few values in Foo{...}"
	}
}
