]> Cypherpunks repositories - gostls13.git/commitdiff
test: extend noescape bytes.Buffer test suite
authorIskander Sharipov <iskander.sharipov@intel.com>
Fri, 7 Sep 2018 17:36:56 +0000 (20:36 +0300)
committerIan Lance Taylor <iant@golang.org>
Fri, 7 Sep 2018 18:49:12 +0000 (18:49 +0000)
Added some more cases that should be guarded against regression.

Change-Id: I9f1dda2fd0be9b6e167ef1cc018fc8cce55c066c
Reviewed-on: https://go-review.googlesource.com/134017
Run-TryBot: Iskander Sharipov <iskander.sharipov@intel.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
test/fixedbugs/issue7921.go

index d32221a209d3bc7727b94f6c2c6935c5cb0d3222..e30e556353b2e7716ebbb565650ba74626c038d7 100644 (file)
@@ -37,3 +37,20 @@ func bufferNoEscape3(xs []string) string { // ERROR "xs does not escape"
        }
        return b.String() // ERROR "inlining call" "string\(bytes.b.buf\[bytes\.b\.off:\]\) escapes to heap"
 }
+
+func bufferNoEscape4() []byte {
+       var b bytes.Buffer
+       b.Grow(64)       // ERROR "b does not escape"
+       useBuffer(&b)    // ERROR "&b does not escape"
+       return b.Bytes() // ERROR "inlining call" "b does not escape"
+}
+
+func bufferNoEscape5() {
+       b := bytes.NewBuffer(make([]byte, 0, 128)) // ERROR "inlining call" "make\(\[\]byte, 0, 128\) does not escape" "&bytes.Buffer literal does not escape"
+       useBuffer(b)
+}
+
+//go:noinline
+func useBuffer(b *bytes.Buffer) { // ERROR "b does not escape"
+       b.WriteString("1234")
+}