aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_expand/src/eager.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir_expand/src/eager.rs')
-rw-r--r--crates/ra_hir_expand/src/eager.rs28
1 files changed, 15 insertions, 13 deletions
diff --git a/crates/ra_hir_expand/src/eager.rs b/crates/ra_hir_expand/src/eager.rs
index f95f37ede..2e6dd3dd8 100644
--- a/crates/ra_hir_expand/src/eager.rs
+++ b/crates/ra_hir_expand/src/eager.rs
@@ -42,24 +42,26 @@ pub fn expand_eager_macro(
42 // When `lazy_expand` is called, its *parent* file must be already exists. 42 // When `lazy_expand` is called, its *parent* file must be already exists.
43 // Here we store an eager macro id for the argument expanded subtree here 43 // Here we store an eager macro id for the argument expanded subtree here
44 // for that purpose. 44 // for that purpose.
45 let arg_id: MacroCallId = db 45 let arg_id = db.intern_eager_expansion({
46 .intern_eager_expansion({ 46 EagerCallLoc {
47 EagerCallLoc { 47 def,
48 def, 48 fragment: FragmentKind::Expr,
49 fragment: FragmentKind::Expr, 49 subtree: Arc::new(parsed_args.clone()),
50 subtree: Arc::new(parsed_args.clone()), 50 file_id: macro_call.file_id,
51 file_id: macro_call.file_id, 51 }
52 } 52 });
53 }) 53 let arg_file_id: MacroCallId = arg_id.into();
54 .into();
55 54
56 let parsed_args = mbe::token_tree_to_syntax_node(&parsed_args, FragmentKind::Expr).ok()?.0; 55 let parsed_args = mbe::token_tree_to_syntax_node(&parsed_args, FragmentKind::Expr).ok()?.0;
57 let result = 56 let result = eager_macro_recur(
58 eager_macro_recur(db, InFile::new(arg_id.as_file(), parsed_args.syntax_node()), resolver)?; 57 db,
58 InFile::new(arg_file_id.as_file(), parsed_args.syntax_node()),
59 resolver,
60 )?;
59 let subtree = to_subtree(&result)?; 61 let subtree = to_subtree(&result)?;
60 62
61 if let MacroDefKind::BuiltInEager(eager) = def.kind { 63 if let MacroDefKind::BuiltInEager(eager) = def.kind {
62 let (subtree, fragment) = eager.expand(&subtree).ok()?; 64 let (subtree, fragment) = eager.expand(db, arg_id, &subtree).ok()?;
63 let eager = 65 let eager =
64 EagerCallLoc { def, fragment, subtree: Arc::new(subtree), file_id: macro_call.file_id }; 66 EagerCallLoc { def, fragment, subtree: Arc::new(subtree), file_id: macro_call.file_id };
65 67