type location …
type locAttr …
const attrEscapes …
const attrPersists …
const attrMutates …
const attrCalls …
func (l *location) hasAttr(attr locAttr) bool { … }
type edge …
func (l *location) asHole() hole { … }
func (l *location) leakTo(sink *location, derefs int) { … }
func (b *batch) leakTo(l, sink *location, derefs int) { … }
func (l *location) isName(c ir.Class) bool { … }
type hole …
type note …
func (k hole) note(where ir.Node, why string) hole { … }
func (k hole) shift(delta int) hole { … }
func (k hole) deref(where ir.Node, why string) hole { … }
func (k hole) addr(where ir.Node, why string) hole { … }
func (k hole) dotType(t *types.Type, where ir.Node, why string) hole { … }
func (b *batch) flow(k hole, src *location) { … }
func (b *batch) heapHole() hole { … }
func (b *batch) mutatorHole() hole { … }
func (b *batch) calleeHole() hole { … }
func (b *batch) discardHole() hole { … }
func (b *batch) oldLoc(n *ir.Name) *location { … }
func (e *escape) newLoc(n ir.Node, persists bool) *location { … }
func (e *escape) teeHole(ks ...hole) hole { … }
func (e *escape) later(k hole) hole { … }
func Fmt(n ir.Node) string { … }