github.com/powerman/golang-tools@v0.1.11-0.20220410185822-5ad214d8d803/go/callgraph/vta/testdata/src/go117.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 type J interface { 10 Foo() 11 Bar() 12 } 13 14 type B struct { 15 p int 16 } 17 18 func (b B) Foo() {} 19 func (b B) Bar() {} 20 21 func Wobble(b *B, s []J) { 22 x := (*[3]J)(s) 23 x[1] = b 24 25 a := &s[2] 26 (*a).Bar() 27 } 28 29 // Relevant SSA: 30 // func Wobble(b *B, s []J): 31 // t0 = slice to array pointer *[3]J <- []J (s) *[3]J 32 // t1 = &t0[1:int] *J 33 // t2 = make J <- *B (b) J 34 // *t1 = t2 35 // t3 = &s[2:int] *J 36 // ... 37 38 // WANT: 39 // Local(t1) -> Slice([]testdata.J) 40 // Slice([]testdata.J) -> Local(t1), Local(t3)