diff --git a/src/cmd/compile/internal/gc/typecheck.go b/src/cmd/compile/internal/gc/typecheck.go index ec6f1832fe..a6acb6a776 100644 --- a/src/cmd/compile/internal/gc/typecheck.go +++ b/src/cmd/compile/internal/gc/typecheck.go @@ -2882,10 +2882,7 @@ func typecheckcomplit(n *Node) *Node { }() if n.Right == nil { - if n.List.Len() != 0 { - setlineno(n.List.First()) - } - yyerror("missing type in composite literal") + yyerrorl(n.Pos, "missing type in composite literal") n.Type = nil return n } diff --git a/test/fixedbugs/issue18231.go b/test/fixedbugs/issue18231.go new file mode 100644 index 0000000000..adfd2277ff --- /dev/null +++ b/test/fixedbugs/issue18231.go @@ -0,0 +1,20 @@ +// errorcheck + +// Copyright 2017 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. + +// Test that error message for composite literals with +// missing type is at the right place. + +package p + +type T struct { + f map[string]string +} + +var _ = T{ + f: { // ERROR "missing type in composite literal" + "a": "b", + }, +}