Skip to content

Commit f4708a8

Browse files
committed
Factor out SourceMap linear search to method
1 parent fdc853a commit f4708a8

File tree

1 file changed

+15
-18
lines changed

1 file changed

+15
-18
lines changed

src/fallback.rs

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -455,35 +455,32 @@ impl SourceMap {
455455
span
456456
}
457457

458-
fn filepath(&self, span: Span) -> String {
458+
fn find(&self, span: Span) -> usize {
459459
for (i, file) in self.files.iter().enumerate() {
460460
if file.span_within(span) {
461-
return if i == 0 {
462-
"<unspecified>".to_owned()
463-
} else {
464-
format!("<parsed string {}>", i)
465-
};
461+
return i;
466462
}
467463
}
468464
unreachable!("Invalid span with no related FileInfo!");
469465
}
470466

471-
fn fileinfo(&self, span: Span) -> &FileInfo {
472-
for file in &self.files {
473-
if file.span_within(span) {
474-
return file;
475-
}
467+
fn filepath(&self, span: Span) -> String {
468+
let i = self.find(span);
469+
if i == 0 {
470+
"<unspecified>".to_owned()
471+
} else {
472+
format!("<parsed string {}>", i)
476473
}
477-
unreachable!("Invalid span with no related FileInfo!");
474+
}
475+
476+
fn fileinfo(&self, span: Span) -> &FileInfo {
477+
let i = self.find(span);
478+
&self.files[i]
478479
}
479480

480481
fn fileinfo_mut(&mut self, span: Span) -> &mut FileInfo {
481-
for file in &mut self.files {
482-
if file.span_within(span) {
483-
return file;
484-
}
485-
}
486-
unreachable!("Invalid span with no related FileInfo!");
482+
let i = self.find(span);
483+
&mut self.files[i]
487484
}
488485
}
489486

0 commit comments

Comments
 (0)