mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-29 13:25:09 +00:00
fix: Fix bad unwrap in eager_macro_recur
This commit is contained in:
parent
f442c4aad6
commit
3db437cbd6
1 changed files with 31 additions and 27 deletions
|
@ -205,9 +205,10 @@ fn eager_macro_recur(
|
||||||
let ExpandResult { value, err: err2 } =
|
let ExpandResult { value, err: err2 } =
|
||||||
db.parse_macro_expansion(call_id.as_macro_file());
|
db.parse_macro_expansion(call_id.as_macro_file());
|
||||||
|
|
||||||
let call_tt_start =
|
if let Some(tt) = call.token_tree() {
|
||||||
call.token_tree().unwrap().syntax().text_range().start();
|
let call_tt_start = tt.syntax().text_range().start();
|
||||||
let call_start = apply_offset(call.syntax().text_range().start(), offset);
|
let call_start =
|
||||||
|
apply_offset(call.syntax().text_range().start(), offset);
|
||||||
if let Some((_, arg_map, _)) = db.macro_arg(call_id).value.as_deref() {
|
if let Some((_, arg_map, _)) = db.macro_arg(call_id).value.as_deref() {
|
||||||
mapping.extend(arg_map.entries().filter_map(|(tid, range)| {
|
mapping.extend(arg_map.entries().filter_map(|(tid, range)| {
|
||||||
value
|
value
|
||||||
|
@ -215,7 +216,8 @@ fn eager_macro_recur(
|
||||||
.first_range_by_token(tid, syntax::SyntaxKind::TOMBSTONE)
|
.first_range_by_token(tid, syntax::SyntaxKind::TOMBSTONE)
|
||||||
.map(|r| (r + call_start, range + call_tt_start))
|
.map(|r| (r + call_start, range + call_tt_start))
|
||||||
}));
|
}));
|
||||||
};
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ExpandResult {
|
ExpandResult {
|
||||||
value: Some(value.0.syntax_node().clone_for_update()),
|
value: Some(value.0.syntax_node().clone_for_update()),
|
||||||
|
@ -250,7 +252,8 @@ fn eager_macro_recur(
|
||||||
)?;
|
)?;
|
||||||
let err = err.or(error);
|
let err = err.or(error);
|
||||||
|
|
||||||
let call_tt_start = call.token_tree().unwrap().syntax().text_range().start();
|
if let Some(tt) = call.token_tree() {
|
||||||
|
let call_tt_start = tt.syntax().text_range().start();
|
||||||
let call_start = apply_offset(call.syntax().text_range().start(), offset);
|
let call_start = apply_offset(call.syntax().text_range().start(), offset);
|
||||||
if let Some((_tt, arg_map, _)) = parse
|
if let Some((_tt, arg_map, _)) = parse
|
||||||
.file_id
|
.file_id
|
||||||
|
@ -265,7 +268,8 @@ fn eager_macro_recur(
|
||||||
)
|
)
|
||||||
.map(|r| (r + call_start, range + call_tt_start))
|
.map(|r| (r + call_start, range + call_tt_start))
|
||||||
}));
|
}));
|
||||||
};
|
}
|
||||||
|
}
|
||||||
// FIXME: Do we need to re-use _m here?
|
// FIXME: Do we need to re-use _m here?
|
||||||
ExpandResult { value: value.map(|(n, _m)| n), err }
|
ExpandResult { value: value.map(|(n, _m)| n), err }
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue