github.com/powerman/golang-tools@v0.1.11-0.20220410185822-5ad214d8d803/go/callgraph/vta/testdata/src/callgraph_ho.go (about) 1 // Copyright 2021 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // go:build ignore 6 7 package testdata 8 9 func Foo() {} 10 11 func Do(b bool) func() { 12 if b { 13 return Foo 14 } 15 return func() {} 16 } 17 18 func Finish(h func()) { 19 h() 20 } 21 22 func Baz(b bool) { 23 Finish(Do(b)) 24 } 25 26 // Relevant SSA: 27 // func Baz(b bool): 28 // t0 = Do(b) 29 // t1 = Finish(t0) 30 // return 31 32 // func Do(b bool) func(): 33 // if b goto 1 else 2 34 // 1: 35 // return Foo 36 // 2: 37 // return Do$1 38 39 // func Finish(h func()): 40 // t0 = h() 41 // return 42 43 // WANT: 44 // Baz: Do(b) -> Do; Finish(t0) -> Finish 45 // Finish: h() -> Do$1, Foo