github.com/powerman/golang-tools@v0.1.11-0.20220410185822-5ad214d8d803/internal/lsp/testdata/callhierarchy/callhierarchy.go (about)

     1  // Copyright 2020 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  package callhierarchy
     6  
     7  import "github.com/powerman/golang-tools/internal/lsp/callhierarchy/outgoing"
     8  
     9  func a() { //@mark(hierarchyA, "a")
    10  	D()
    11  }
    12  
    13  func b() { //@mark(hierarchyB, "b")
    14  	D()
    15  }
    16  
    17  // C is an exported function
    18  func C() { //@mark(hierarchyC, "C")
    19  	D()
    20  	D()
    21  }
    22  
    23  // To test hierarchy across function literals
    24  var x = func() { //@mark(hierarchyLiteral, "func"),mark(hierarchyLiteralOut, "x")
    25  	D()
    26  }
    27  
    28  // D is exported to test incoming/outgoing calls across packages
    29  func D() { //@mark(hierarchyD, "D"),incomingcalls(hierarchyD, hierarchyA, hierarchyB, hierarchyC, hierarchyLiteral, incomingA),outgoingcalls(hierarchyD, hierarchyE, hierarchyF, hierarchyG, hierarchyLiteralOut, outgoingB, hierarchyFoo, hierarchyH, hierarchyI, hierarchyJ, hierarchyK)
    30  	e()
    31  	x()
    32  	F()
    33  	outgoing.B()
    34  	foo := func() {} //@mark(hierarchyFoo, "foo"),incomingcalls(hierarchyFoo, hierarchyD),outgoingcalls(hierarchyFoo)
    35  	foo()
    36  
    37  	func() {
    38  		g()
    39  	}()
    40  
    41  	var i Interface = impl{}
    42  	i.H()
    43  	i.I()
    44  
    45  	s := Struct{}
    46  	s.J()
    47  	s.K()
    48  }
    49  
    50  func e() {} //@mark(hierarchyE, "e")
    51  
    52  // F is an exported function
    53  func F() {} //@mark(hierarchyF, "F")
    54  
    55  func g() {} //@mark(hierarchyG, "g")
    56  
    57  type Interface interface {
    58  	H() //@mark(hierarchyH, "H")
    59  	I() //@mark(hierarchyI, "I")
    60  }
    61  
    62  type impl struct{}
    63  
    64  func (i impl) H() {}
    65  func (i impl) I() {}
    66  
    67  type Struct struct {
    68  	J func() //@mark(hierarchyJ, "J")
    69  	K func() //@mark(hierarchyK, "K")
    70  }