Simplify find_width_of_character_at_span.
This commit is contained in:
parent
0a0e045e50
commit
6289c57dc0
2 changed files with 8 additions and 24 deletions
|
@ -1019,36 +1019,19 @@ impl SourceMap {
|
|||
|
||||
let src = local_begin.sf.external_src.borrow();
|
||||
|
||||
// We need to extend the snippet to the end of the src rather than to end_index so when
|
||||
// searching forwards for boundaries we've got somewhere to search.
|
||||
let snippet = if let Some(ref src) = local_begin.sf.src {
|
||||
&src[start_index..]
|
||||
let snippet = if let Some(src) = &local_begin.sf.src {
|
||||
src
|
||||
} else if let Some(src) = src.get_source() {
|
||||
&src[start_index..]
|
||||
src
|
||||
} else {
|
||||
return 1;
|
||||
};
|
||||
debug!("snippet=`{:?}`", snippet);
|
||||
|
||||
let mut target = if forwards { end_index + 1 } else { end_index - 1 };
|
||||
debug!("initial target=`{:?}`", target);
|
||||
|
||||
while !snippet.is_char_boundary(target - start_index) && target < source_len {
|
||||
target = if forwards {
|
||||
target + 1
|
||||
} else {
|
||||
match target.checked_sub(1) {
|
||||
Some(target) => target,
|
||||
None => {
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
debug!("target=`{:?}`", target);
|
||||
if forwards {
|
||||
(snippet.ceil_char_boundary(end_index + 1) - end_index) as u32
|
||||
} else {
|
||||
(end_index - snippet.floor_char_boundary(end_index - 1)) as u32
|
||||
}
|
||||
debug!("final target=`{:?}`", target);
|
||||
|
||||
if forwards { (target - end_index) as u32 } else { (end_index - target) as u32 }
|
||||
}
|
||||
|
||||
pub fn get_source_file(&self, filename: &FileName) -> Option<Lrc<SourceFile>> {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue