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