Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/macro_expansion_tests/mod.rs')
-rw-r--r--crates/hir-def/src/macro_expansion_tests/mod.rs64
1 files changed, 31 insertions, 33 deletions
diff --git a/crates/hir-def/src/macro_expansion_tests/mod.rs b/crates/hir-def/src/macro_expansion_tests/mod.rs
index 73a495d89b..6286295c52 100644
--- a/crates/hir-def/src/macro_expansion_tests/mod.rs
+++ b/crates/hir-def/src/macro_expansion_tests/mod.rs
@@ -151,47 +151,45 @@ pub fn identity_when_valid(_attr: TokenStream, item: TokenStream) -> TokenStream
if let Some(err) = exp.err {
format_to!(expn_text, "/* error: {} */", err);
}
- if let Some((parse, token_map)) = exp.value {
- if expect_errors {
- assert!(!parse.errors().is_empty(), "no parse errors in expansion");
- for e in parse.errors() {
- format_to!(expn_text, "/* parse error: {} */\n", e);
- }
- } else {
- assert!(
- parse.errors().is_empty(),
- "parse errors in expansion: \n{:#?}",
- parse.errors()
- );
+ let (parse, token_map) = exp.value;
+ if expect_errors {
+ assert!(!parse.errors().is_empty(), "no parse errors in expansion");
+ for e in parse.errors() {
+ format_to!(expn_text, "/* parse error: {} */\n", e);
}
- let pp = pretty_print_macro_expansion(
- parse.syntax_node(),
- show_token_ids.then_some(&*token_map),
+ } else {
+ assert!(
+ parse.errors().is_empty(),
+ "parse errors in expansion: \n{:#?}",
+ parse.errors()
);
- let indent = IndentLevel::from_node(call.syntax());
- let pp = reindent(indent, pp);
- format_to!(expn_text, "{}", pp);
+ }
+ let pp = pretty_print_macro_expansion(
+ parse.syntax_node(),
+ show_token_ids.then_some(&*token_map),
+ );
+ let indent = IndentLevel::from_node(call.syntax());
+ let pp = reindent(indent, pp);
+ format_to!(expn_text, "{}", pp);
- if tree {
- let tree = format!("{:#?}", parse.syntax_node())
- .split_inclusive('\n')
- .map(|line| format!("// {line}"))
- .collect::<String>();
- format_to!(expn_text, "\n{}", tree)
- }
+ if tree {
+ let tree = format!("{:#?}", parse.syntax_node())
+ .split_inclusive('\n')
+ .map(|line| format!("// {line}"))
+ .collect::<String>();
+ format_to!(expn_text, "\n{}", tree)
}
let range = call.syntax().text_range();
let range: Range<usize> = range.into();
if show_token_ids {
- if let Some((tree, map, _)) = arg.as_deref() {
- let tt_range = call.token_tree().unwrap().syntax().text_range();
- let mut ranges = Vec::new();
- extract_id_ranges(&mut ranges, map, tree);
- for (range, id) in ranges {
- let idx = (tt_range.start() + range.end()).into();
- text_edits.push((idx..idx, format!("#{}", id.0)));
- }
+ let (tree, map, _) = &*arg;
+ let tt_range = call.token_tree().unwrap().syntax().text_range();
+ let mut ranges = Vec::new();
+ extract_id_ranges(&mut ranges, map, tree);
+ for (range, id) in ranges {
+ let idx = (tt_range.start() + range.end()).into();
+ text_edits.push((idx..idx, format!("#{}", id.0)));
}
text_edits.push((range.start..range.start, "// ".into()));
call.to_string().match_indices('\n').for_each(|(offset, _)| {