mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-04 19:29:07 +00:00
Refactor a bit
This commit is contained in:
parent
604bdc6ffe
commit
2a76bb5a0b
@ -151,8 +151,7 @@ pub(crate) fn parse_macro_with_info(
|
|||||||
let arg_start = arg_tt.map(|t| t.syntax().text_range().start());
|
let arg_start = arg_tt.map(|t| t.syntax().text_range().start());
|
||||||
let def_start = def_tt.map(|t| t.syntax().text_range().start());
|
let def_start = def_tt.map(|t| t.syntax().text_range().start());
|
||||||
|
|
||||||
let macro_rules = db.macro_def(loc.def).ok_or("Fail to find macro definition").ok()?.0;
|
let shift = db.macro_def(loc.def)?.0.shift();
|
||||||
let shift = macro_rules.shift();
|
|
||||||
|
|
||||||
let arg_map = arg_start
|
let arg_map = arg_start
|
||||||
.map(|start| exp_map.map_ranges(&expand_info.arg_map, start, shift))
|
.map(|start| exp_map.map_ranges(&expand_info.arg_map, start, shift))
|
||||||
|
@ -133,7 +133,7 @@ impl TokenMap {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl ExpandedRangeMap {
|
impl ExpandedRangeMap {
|
||||||
fn set(&mut self, relative_range: TextRange, token_id: &tt::TokenId) {
|
fn add(&mut self, relative_range: TextRange, token_id: &tt::TokenId) {
|
||||||
self.ranges.push((relative_range, token_id.clone()))
|
self.ranges.push((relative_range, token_id.clone()))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -145,13 +145,11 @@ impl ExpandedRangeMap {
|
|||||||
) -> Vec<(TextRange, TextRange)> {
|
) -> Vec<(TextRange, TextRange)> {
|
||||||
self.ranges
|
self.ranges
|
||||||
.iter()
|
.iter()
|
||||||
.filter_map(|(r, tid)| if shift <= tid.0 { Some((r, tid.0 - shift)) } else { None })
|
|
||||||
.filter_map(|(r, tid)| {
|
.filter_map(|(r, tid)| {
|
||||||
if let Some(to_range) = to.relative_range_of(tt::TokenId(tid)) {
|
let adjusted_id = tt::TokenId(tid.0.checked_sub(shift)?);
|
||||||
Some((*r, TextRange::from_to(to_range.start() + start, to_range.end() + start)))
|
let to_range = to.relative_range_of(adjusted_id)?;
|
||||||
} else {
|
|
||||||
None
|
Some((*r, TextRange::offset_len(to_range.start() + start, to_range.len())))
|
||||||
}
|
|
||||||
})
|
})
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
@ -361,8 +359,7 @@ impl<'a> TreeSink for TtTreeSink<'a> {
|
|||||||
self.text_pos + TextUnit::of_str(&self.buf),
|
self.text_pos + TextUnit::of_str(&self.buf),
|
||||||
TextUnit::of_str(&ident.text),
|
TextUnit::of_str(&ident.text),
|
||||||
);
|
);
|
||||||
let token_id = ident.id;
|
self.range_map.add(range, &ident.id);
|
||||||
self.range_map.set(range, &token_id);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user