github.com/powerman/golang-tools@v0.1.11-0.20220410185822-5ad214d8d803/go/callgraph/vta/testdata/src/store.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  // Tests graph creation for store/load and make instructions.
    10  // Note that ssa package does not have a load instruction per
    11  // se. Yet, one is encoded as a unary instruction with the
    12  // * operator.
    13  
    14  type A struct{}
    15  
    16  type I interface{ foo() }
    17  
    18  func (a A) foo() {}
    19  
    20  func main() {
    21  	a := A{}
    22  	var i I
    23  	i = a
    24  	ii := &i
    25  	(*ii).foo()
    26  }
    27  
    28  // Relevant SSA:
    29  //	t0 = local A (a)
    30  //	t1 = new I (i)
    31  //	t2 = *t0                 no interesting flow: concrete types
    32  //	t3 = make I <- A (t2)    t2 -> t3
    33  //	*t1 = t3                 t3 -> t1
    34  //	t4 = *t1                 t1 -> t4
    35  //	t5 = invoke t4.foo()
    36  //	return
    37  
    38  // WANT:
    39  // Local(t2) -> Local(t3)
    40  // Local(t3) -> Local(t1)
    41  // Local(t1) -> Local(t4)