}
check.expr(x, e)
if i >= len(fields) {
- check.error(x, "too many values in struct literal")
+ check.errorf(x, "too many values in %s{…}", base)
break // cannot continue
}
// i < len(fields)
check.assignment(x, etyp, "struct literal")
}
if len(e.ElemList) < len(fields) {
- check.error(e.Rbrace, "too few values in struct literal")
+ check.errorf(e.Rbrace, "too few values in %s{…}", base)
// ok to continue
}
}
--- /dev/null
+// Copyright 2013 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 p
+
+type S struct {
+ f1 int
+ f2 bool
+}
+
+var (
+ _ = S{0} /* ERROR too few values in S{…} */
+ _ = struct{ f1, f2 int }{0} /* ERROR too few values in struct{f1 int; f2 int}{…} */
+
+ _ = S{0, true, "foo" /* ERROR too many values in S{…} */}
+ _ = struct{ f1, f2 int }{0, 1, 2 /* ERROR too many values in struct{f1 int; f2 int}{…} */}
+)
}
check.expr(x, e)
if i >= len(fields) {
- check.error(x, _InvalidStructLit, "too many values in struct literal")
+ check.errorf(x, _InvalidStructLit, "too many values in %s{…}", base)
break // cannot continue
}
// i < len(fields)
check.assignment(x, etyp, "struct literal")
}
if len(e.Elts) < len(fields) {
- check.error(inNode(e, e.Rbrace), _InvalidStructLit, "too few values in struct literal")
+ check.errorf(inNode(e, e.Rbrace), _InvalidStructLit, "too few values in %s{…}", base)
// ok to continue
}
}
--- /dev/null
+// Copyright 2013 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 p
+
+type S struct {
+ f1 int
+ f2 bool
+}
+
+var (
+ _ = S{0} /* ERROR too few values in S{…} */
+ _ = struct{ f1, f2 int }{0} /* ERROR too few values in struct{f1 int; f2 int}{…} */
+
+ _ = S{0, true, "foo" /* ERROR too many values in S{…} */}
+ _ = struct{ f1, f2 int }{0, 1, 2 /* ERROR too many values in struct{f1 int; f2 int}{…} */}
+)