1 // Copyright 2019 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.
14 // lineStart is the pre-Go 1.12 version of (*token.File).LineStart. For Go
15 // versions <= 1.11, we borrow logic from the analysisutil package.
16 // TODO(rstambler): Delete this file when we no longer support Go 1.11.
17 func lineStart(f *token.File, line int) token.Pos {
18 // Use binary search to find the start offset of this line.
21 max := f.Size() // exclusive
23 offset := (min + max) / 2
25 posn := f.Position(pos)
26 if posn.Line == line {
27 return pos - (token.Pos(posn.Column) - 1)