github.com/amarpal/go-tools@v0.0.0-20240422043104-40142f59f616/analysis/facts/purity/testdata/src/example.com/Purity/CheckPureFunctions.go (about)

     1  package pkg
     2  
     3  func foo(a, b int) int { return a + b } // want foo:"is pure"
     4  func bar(a, b int) int {
     5  	println(a + b)
     6  	return a + b
     7  }
     8  
     9  func empty()            {}
    10  func stubPointer() *int { return nil }
    11  func stubInt() int      { return 0 }
    12  
    13  func fn3() {
    14  	empty()
    15  	stubPointer()
    16  	stubInt()
    17  }
    18  
    19  func ptr1() *int { return new(int) }
    20  func ptr2() *int { var x int; return &x }
    21  func lit() []int { return []int{} }
    22  
    23  var X int
    24  
    25  func load() int        { _ = X; return 0 }
    26  func assign(x int) int { _ = x; return 0 } // want assign:"is pure"
    27  
    28  type pureStruct1 struct {
    29  	a int
    30  	b string
    31  	pureStruct2
    32  }
    33  
    34  type pureStruct2 struct {
    35  	c float64
    36  }
    37  
    38  func (arg pureStruct1) get() int { // want get:"is pure"
    39  	return arg.a
    40  }