aboutsummaryrefslogtreecommitdiff
path: root/test/escape_iface.go
diff options
context:
space:
mode:
authorDavid Chase <drchase@google.com>2015-07-30 12:31:18 -0400
committerDavid Chase <drchase@google.com>2015-07-30 17:39:44 +0000
commit6f6bcadc17087f564f1d5d915f08765b0a1e7263 (patch)
tree1f0baf88261e86e15b4db7737a6dfaae487a01b1 /test/escape_iface.go
parent0bd8de10486ec14762e9531fd62e780c2ab5180c (diff)
downloadgo-6f6bcadc17087f564f1d5d915f08765b0a1e7263.tar.gz
go-6f6bcadc17087f564f1d5d915f08765b0a1e7263.zip
cmd/compile: add case for ODOTTYPE to escwalk
ODOTTYPE should be treated a whole lot like ODOT, but it was missing completely from the switch in escwalk and thus escape status did not propagate to fields. Since interfaces are required to trigger this bug, the test was added to escape_iface.go. Fixes #11931. Change-Id: Id0383981cc4b1a160f6ad447192a112eed084538 Reviewed-on: https://go-review.googlesource.com/12921 Run-TryBot: David Chase <drchase@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Dmitry Vyukov <dvyukov@google.com> Reviewed-by: Russ Cox <rsc@golang.org>
Diffstat (limited to 'test/escape_iface.go')
-rw-r--r--test/escape_iface.go16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/escape_iface.go b/test/escape_iface.go
index 3bc914c8bb..2b1144ad2c 100644
--- a/test/escape_iface.go
+++ b/test/escape_iface.go
@@ -209,3 +209,19 @@ func efaceEscape2() {
mdoesnotescape(x)
}
}
+
+type T1 struct {
+ p *int
+}
+
+type T2 struct {
+ T1 T1
+}
+
+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"
+ }
+}