]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: use underlying OCOMPLIT's position for OPTRLIT
authorMatthew Dempsky <mdempsky@google.com>
Wed, 25 Sep 2019 06:56:50 +0000 (23:56 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Wed, 25 Sep 2019 17:07:09 +0000 (17:07 +0000)
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: Brad Fitzpatrick <bradfitz@golang.org>
src/cmd/compile/internal/gc/typecheck.go
test/escape_iface.go

index b35ab543ec84386144a68227a77ba03fbe49573b..580e9154e1d93c18f7979eebbf2dcc952998ef2d 100644 (file)
@@ -3026,7 +3026,7 @@ func typecheckcomplit(n *Node) (res *Node) {
 
        n.Orig = norig
        if n.Type.IsPtr() {
-               n = nod(OPTRLIT, n, nil)
+               n = nodl(n.Pos, OPTRLIT, n, nil)
                n.SetTypecheck(1)
                n.Type = n.Left.Type
                n.Left.Type = t
index 898f504b3134252f6b5dc36d81576ca233dbe6ed..118ed3c56ffbaf1da26b7cc4116284902d1fc7d9 100644 (file)
@@ -220,8 +220,8 @@ type T2 struct {
 func dotTypeEscape() *T2 { // #11931
        var x interface{}
        x = &T1{p: new(int)} // ERROR "new\(int\) escapes to heap" "&T1 literal does not escape"
-       return &T2{
-               T1: *(x.(*T1)), // ERROR "&T2 literal escapes to heap"
+       return &T2{          // ERROR "&T2 literal escapes to heap"
+               T1: *(x.(*T1)),
        }
 }