type nameFinder … // newNameFinder returns a new nameFinder object with a reassignment // oracle initialized based on the function fn, or if fn is nil, // without an underlying ReassignOracle. func newNameFinder(fn *ir.Func) *nameFinder { … } // funcName returns the *ir.Name for the func or method // corresponding to node 'n', or nil if n can't be proven // to contain a function value. func (nf *nameFinder) funcName(n ir.Node) *ir.Name { … } // isAllocatedMem returns true if node n corresponds to a memory // allocation expression (make, new, or equivalent). func (nf *nameFinder) isAllocatedMem(n ir.Node) bool { … } // constValue returns the underlying constant.Value for an AST node n // if n is itself a constant value/expr, or if n is a singly assigned // local containing constant expr/value (or nil not constant). func (nf *nameFinder) constValue(n ir.Node) constant.Value { … } // isNil returns whether n is nil (or singly // assigned local containing nil). func (nf *nameFinder) isNil(n ir.Node) bool { … } func (nf *nameFinder) staticValue(n ir.Node) ir.Node { … } func (nf *nameFinder) reassigned(n *ir.Name) bool { … } func (nf *nameFinder) isConcreteConvIface(n ir.Node) bool { … } func isSameFuncName(v1, v2 *ir.Name) bool { … }