mirror of
https://github.com/golang/go.git
synced 2024-09-29 06:17:11 +00:00
go/token: rename RemoveLine to MergeLine, improve documentation
This is a follow-up to feedback from gri in https://golang.org/cl/12837044/. Most of the wording and naming improvements are lifted shamelessly from him. R=gri CC=golang-dev https://golang.org/cl/13670043
This commit is contained in:
parent
4874bc9b76
commit
1ea0c480dc
@ -44,7 +44,7 @@ func SortImports(fset *token.FileSet, f *File) {
|
|||||||
lastSpec := d.Specs[len(d.Specs)-1]
|
lastSpec := d.Specs[len(d.Specs)-1]
|
||||||
lastLine := fset.Position(lastSpec.Pos()).Line
|
lastLine := fset.Position(lastSpec.Pos()).Line
|
||||||
if rParenLine := fset.Position(d.Rparen).Line; rParenLine > lastLine+1 {
|
if rParenLine := fset.Position(d.Rparen).Line; rParenLine > lastLine+1 {
|
||||||
fset.File(d.Rparen).RemoveLine(rParenLine - 1)
|
fset.File(d.Rparen).MergeLine(rParenLine - 1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -146,7 +146,7 @@ func sortSpecs(fset *token.FileSet, f *File, specs []Spec) []Spec {
|
|||||||
deduped = append(deduped, s)
|
deduped = append(deduped, s)
|
||||||
} else {
|
} else {
|
||||||
p := s.Pos()
|
p := s.Pos()
|
||||||
fset.File(p).RemoveLine(fset.Position(p).Line)
|
fset.File(p).MergeLine(fset.Position(p).Line)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
specs = deduped
|
specs = deduped
|
||||||
|
@ -97,7 +97,7 @@ type File struct {
|
|||||||
size int // file size as provided to AddFile
|
size int // file size as provided to AddFile
|
||||||
|
|
||||||
// lines and infos are protected by set.mutex
|
// lines and infos are protected by set.mutex
|
||||||
lines []int
|
lines []int // lines contains the offset of the first character for each line (the first entry is always 0)
|
||||||
infos []lineInfo
|
infos []lineInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -136,13 +136,27 @@ func (f *File) AddLine(offset int) {
|
|||||||
f.set.mutex.Unlock()
|
f.set.mutex.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
// RemoveLine removes a line by line number as reported by Position.Line.
|
// MergeLine merges a line with the following line. It is akin to replacing
|
||||||
|
// the newline character at the end of the line with a space (to not change the
|
||||||
|
// remaining offsets). To obtain the line number, consult e.g. Position.Line.
|
||||||
|
// MergeLine will panic if given an invalid line number.
|
||||||
//
|
//
|
||||||
func (f *File) RemoveLine(line int) {
|
func (f *File) MergeLine(line int) {
|
||||||
|
if line <= 0 {
|
||||||
|
panic("illegal line number (line numbering starts at 1)")
|
||||||
|
}
|
||||||
f.set.mutex.Lock()
|
f.set.mutex.Lock()
|
||||||
|
defer f.set.mutex.Unlock()
|
||||||
|
if line >= len(f.lines) {
|
||||||
|
panic("illegal line number")
|
||||||
|
}
|
||||||
|
// To merge the line numbered <line> with the line numbered <line+1>,
|
||||||
|
// we need to remove the entry in lines corresponding to the line
|
||||||
|
// numbered <line+1>. The entry in lines corresponding to the line
|
||||||
|
// numbered <line+1> is located at index <line>, since indices in lines
|
||||||
|
// are 0-based and line numbers are 1-based.
|
||||||
copy(f.lines[line:], f.lines[line+1:])
|
copy(f.lines[line:], f.lines[line+1:])
|
||||||
f.lines = f.lines[:len(f.lines)-1]
|
f.lines = f.lines[:len(f.lines)-1]
|
||||||
f.set.mutex.Unlock()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetLines sets the line offsets for a file and returns true if successful.
|
// SetLines sets the line offsets for a file and returns true if successful.
|
||||||
|
Loading…
Reference in New Issue
Block a user