From 2770c507a54770b38c8654357cf0f47e3f0f3052 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Tue, 14 Feb 2017 17:13:13 -0800 Subject: [PATCH] cmd/compile: fix position for "missing type in composite literal" error Fixes #18231. Change-Id: If1615da4db0e6f0516369a1dc37340d80c78f237 Reviewed-on: https://go-review.googlesource.com/37018 Reviewed-by: Matthew Dempsky --- src/cmd/compile/internal/gc/typecheck.go | 5 +---- test/fixedbugs/issue18231.go | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 test/fixedbugs/issue18231.go 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", + }, +} -- 2.48.1