]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: use key position for key:val elements in composite literals
authorRobert Griesemer <gri@golang.org>
Tue, 13 Mar 2018 20:11:09 +0000 (13:11 -0700)
committerRobert Griesemer <gri@golang.org>
Tue, 13 Mar 2018 21:44:12 +0000 (21:44 +0000)
Fixes #24339.

Change-Id: Ie47764fed27f76b480834b1fdbed0512c94831d9
Reviewed-on: https://go-review.googlesource.com/100457
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/internal/gc/noder.go
test/fixedbugs/issue24339.go [new file with mode: 0644]

index fc6c5587df477f179d35e97c9e7a09c917c61a26..1d491d2acca7072145c978d6435ca1c6da28285d 100644 (file)
@@ -569,7 +569,8 @@ func (p *noder) expr(expr syntax.Expr) *Node {
                lineno = p.makeXPos(expr.Rbrace)
                return n
        case *syntax.KeyValueExpr:
-               return p.nod(expr, OKEY, p.expr(expr.Key), p.wrapname(expr.Value, p.expr(expr.Value)))
+               // use position of expr.Key rather than of expr (which has position of ':')
+               return p.nod(expr.Key, OKEY, p.expr(expr.Key), p.wrapname(expr.Value, p.expr(expr.Value)))
        case *syntax.FuncLit:
                return p.funcLit(expr)
        case *syntax.ParenExpr:
diff --git a/test/fixedbugs/issue24339.go b/test/fixedbugs/issue24339.go
new file mode 100644 (file)
index 0000000..0670bec
--- /dev/null
@@ -0,0 +1,20 @@
+// 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.
+
+package p
+
+// Use a diffent line number for each token so we can
+// check that the error message appears at the correct
+// position.
+var _ = struct{}{ /*line :20:1*/foo /*line :21:1*/: /*line :22:1*/0 }
+
+
+
+
+
+
+
+// ERROR "unknown field 'foo'"
\ No newline at end of file