replace the hand-written binary search with the library one

This commit is contained in:
Guanqun Lu 2019-10-12 12:45:28 +08:00
parent 4b42e919d6
commit e0395341f7

View file

@ -882,21 +882,13 @@ impl SourceMap {
let files = &files.source_files;
let count = files.len();
// Binary search for the `SourceFile`.
let mut a = 0;
let mut b = count;
while b - a > 1 {
let m = (a + b) / 2;
if files[m].start_pos > pos {
b = m;
} else {
a = m;
}
}
// (p - 1) below will not underflow, this follows previous implementation's assumption.
assert!(count >= 1);
let ret = files.binary_search_by_key(&pos, |key| key.start_pos).unwrap_or_else(|p| p - 1);
assert!(a < count, "position {} does not resolve to a source location", pos.to_usize());
assert!(ret < count, "position {} does not resolve to a source location", pos.to_usize());
return a;
return ret;
}
pub fn count_lines(&self) -> usize {