mirror of
https://github.com/golang/go
synced 2024-11-02 11:50:30 +00:00
cmd/compile: use key position for key:val elements in composite literals
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>
This commit is contained in:
parent
63f4ab98eb
commit
363bcd7b4f
2 changed files with 22 additions and 1 deletions
|
@ -569,7 +569,8 @@ func (p *noder) expr(expr syntax.Expr) *Node {
|
||||||
lineno = p.makeXPos(expr.Rbrace)
|
lineno = p.makeXPos(expr.Rbrace)
|
||||||
return n
|
return n
|
||||||
case *syntax.KeyValueExpr:
|
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:
|
case *syntax.FuncLit:
|
||||||
return p.funcLit(expr)
|
return p.funcLit(expr)
|
||||||
case *syntax.ParenExpr:
|
case *syntax.ParenExpr:
|
||||||
|
|
20
test/fixedbugs/issue24339.go
Normal file
20
test/fixedbugs/issue24339.go
Normal file
|
@ -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'"
|
Loading…
Reference in a new issue