func isPoorStatementOp(op Op) bool { … } // nextGoodStatementIndex returns an index at i or later that is believed // to be a good place to start the statement for b. This decision is // based on v's Op, the possibility of a better later operation, and // whether the values following i are the same line as v. // If a better statement index isn't found, then i is returned. func nextGoodStatementIndex(v *Value, i int, b *Block) int { … } // notStmtBoundary reports whether a value with opcode op can never be a statement // boundary. Such values don't correspond to a user's understanding of a // statement boundary. func notStmtBoundary(op Op) bool { … } func (b *Block) FirstPossibleStmtValue() *Value { … } func flc(p src.XPos) string { … } type fileAndPair … type fileAndPairs … func (fap fileAndPairs) Len() int { … } func (fap fileAndPairs) Less(i, j int) bool { … } func (fap fileAndPairs) Swap(i, j int) { … } // -d=ssa/number_lines/stats=1 (that bit) for line and file distribution statistics // -d=ssa/number_lines/debug for information about why particular values are marked as statements. func numberLines(f *Func) { … }