GoPLS Viewer

Home|gopls/go/callgraph/vta/testdata/src/stores_arrays.go
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
7package testdata
8
9type I interface {
10    Foo()
11}
12
13type J interface {
14    Foo()
15    Bar()
16}
17
18type B struct {
19    p int
20}
21
22func (b BFoo() {}
23func (b BBar() {}
24
25func Baz(b *BS []*Is []J) {
26    var x [3]I
27    x[1] = b
28
29    a := &s[2]
30    (*a).Bar()
31
32    print([3]*I{nilnilnil}[2])
33}
34
35// Relevant SSA:
36// func Baz(b *B, S []*I, s []J):
37//   t0 = local [3]I (x)
38//   t1 = &t0[1:int]
39//   ...
40//   t3 = &s[2:int]
41//   t4 = *t3
42//   ...
43//   t6 = local [3]*I (complit)
44//   t7 = &t6[0:int]
45//         ...
46//   t11 = t10[2:int]
47//   ...
48
49// WANT:
50// Slice([]testdata.I) -> Local(t1)
51// Local(t1) -> Slice([]testdata.I)
52// Slice([]testdata.J) -> Local(t3)
53// Local(t3) -> Local(t4), Slice([]testdata.J)
54// Local(t11) -> Slice([]*testdata.I)
55// Slice([]*testdata.I) -> Local(t11), PtrInterface(testdata.I)
56// Constant(*testdata.I) -> PtrInterface(testdata.I)
57
MembersX
Baz.S
Baz.s
Members
X