GoPLS Viewer

Home|gopls/go/callgraph/vta/testdata/src/static_calls.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
11func foo(i I) (II) {
12    return ii
13}
14
15func doWork(ii I) {}
16
17func close(iii I) {}
18
19func Baz(inp I) {
20    ab := foo(inp)
21    defer close(a)
22    go doWork(b)
23}
24
25// Relevant SSA:
26// func Baz(inp I):
27//   t0 = foo(inp)
28//   t1 = extract t0 #0
29//   t2 = extract t0 #1
30//   defer close(t1)
31//   go doWork(t2)
32//   rundefers
33//   ...
34// func foo(i I) (I, I):
35//   return i, i
36
37// WANT:
38// Local(inp) -> Local(i)
39// Local(t1) -> Local(iii)
40// Local(t2) -> Local(ii)
41// Local(i) -> Local(t0[0]), Local(t0[1])
42
MembersX
close.iii
Baz.inp
Baz.BlockStmt.b
foo.i
doWork.ii
Members
X