1// errorcheck -0 -m -l 2 3// Copyright 2019 The Go Authors. All rights reserved. 4// Use of this source code is governed by a BSD-style 5// license that can be found in the LICENSE file. 6 7// Test escape analysis for self assignments. 8 9package escape 10 11type S struct { 12 i int 13 pi *int 14} 15 16var sink S 17 18func f(p *S) { // ERROR "leaking param: p" 19 p.pi = &p.i 20 sink = *p 21} 22 23// BAD: "leaking param: p" is too conservative 24func g(p *S) { // ERROR "leaking param: p" 25 p.pi = &p.i 26} 27 28func h() { 29 var s S // ERROR "moved to heap: s" 30 g(&s) 31 sink = s 32} 33