Commit efb97392 authored by Matthew Dempsky's avatar Matthew Dempsky

cmd/compile: use underlying OCOMPLIT's position for OPTRLIT

Currently, when we create an OPTRLIT node, it defaults to the
OCOMPLIT's final element's position. But it improves error messages to
use the OCOMPLIT's own position instead.

Change-Id: Ibb031f543c7248d88d99fd0737685e01d86e2500
Reviewed-on: https://go-review.googlesource.com/c/go/+/197119
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
parent 3e428363
...@@ -3026,7 +3026,7 @@ func typecheckcomplit(n *Node) (res *Node) { ...@@ -3026,7 +3026,7 @@ func typecheckcomplit(n *Node) (res *Node) {
n.Orig = norig n.Orig = norig
if n.Type.IsPtr() { if n.Type.IsPtr() {
n = nod(OPTRLIT, n, nil) n = nodl(n.Pos, OPTRLIT, n, nil)
n.SetTypecheck(1) n.SetTypecheck(1)
n.Type = n.Left.Type n.Type = n.Left.Type
n.Left.Type = t n.Left.Type = t
......
...@@ -220,8 +220,8 @@ type T2 struct { ...@@ -220,8 +220,8 @@ type T2 struct {
func dotTypeEscape() *T2 { // #11931 func dotTypeEscape() *T2 { // #11931
var x interface{} var x interface{}
x = &T1{p: new(int)} // ERROR "new\(int\) escapes to heap" "&T1 literal does not escape" x = &T1{p: new(int)} // ERROR "new\(int\) escapes to heap" "&T1 literal does not escape"
return &T2{ return &T2{ // ERROR "&T2 literal escapes to heap"
T1: *(x.(*T1)), // ERROR "&T2 literal escapes to heap" T1: *(x.(*T1)),
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment