aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_expand/src/eager.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/hir_expand/src/eager.rs')
-rw-r--r--crates/hir_expand/src/eager.rs32
1 files changed, 16 insertions, 16 deletions
diff --git a/crates/hir_expand/src/eager.rs b/crates/hir_expand/src/eager.rs
index 85491fe8b..5e30ab930 100644
--- a/crates/hir_expand/src/eager.rs
+++ b/crates/hir_expand/src/eager.rs
@@ -22,7 +22,7 @@
22use crate::{ 22use crate::{
23 ast::{self, AstNode}, 23 ast::{self, AstNode},
24 db::AstDatabase, 24 db::AstDatabase,
25 EagerCallLoc, EagerMacroId, InFile, MacroCallId, MacroCallKind, MacroDefId, MacroDefKind, 25 EagerCallInfo, InFile, MacroCallId, MacroCallKind, MacroCallLoc, MacroDefId, MacroDefKind,
26}; 26};
27 27
28use base_db::CrateId; 28use base_db::CrateId;
@@ -105,7 +105,7 @@ pub fn expand_eager_macro(
105 def: MacroDefId, 105 def: MacroDefId,
106 resolver: &dyn Fn(ast::Path) -> Option<MacroDefId>, 106 resolver: &dyn Fn(ast::Path) -> Option<MacroDefId>,
107 mut diagnostic_sink: &mut dyn FnMut(mbe::ExpandError), 107 mut diagnostic_sink: &mut dyn FnMut(mbe::ExpandError),
108) -> Result<EagerMacroId, ErrorEmitted> { 108) -> Result<MacroCallId, ErrorEmitted> {
109 let parsed_args = diagnostic_sink.option_with( 109 let parsed_args = diagnostic_sink.option_with(
110 || Some(mbe::ast_to_token_tree(&macro_call.value.token_tree()?).0), 110 || Some(mbe::ast_to_token_tree(&macro_call.value.token_tree()?).0),
111 || err("malformed macro invocation"), 111 || err("malformed macro invocation"),
@@ -118,15 +118,14 @@ pub fn expand_eager_macro(
118 // When `lazy_expand` is called, its *parent* file must be already exists. 118 // When `lazy_expand` is called, its *parent* file must be already exists.
119 // Here we store an eager macro id for the argument expanded subtree here 119 // Here we store an eager macro id for the argument expanded subtree here
120 // for that purpose. 120 // for that purpose.
121 let arg_id = db.intern_eager_expansion({ 121 let arg_id = db.intern_macro(MacroCallLoc {
122 EagerCallLoc { 122 def,
123 def, 123 krate,
124 fragment: FragmentKind::Expr, 124 eager: Some(EagerCallInfo {
125 subtree: Arc::new(parsed_args.clone()), 125 expansion: Arc::new(parsed_args.clone()),
126 krate,
127 call: call_id,
128 included_file: None, 126 included_file: None,
129 } 127 }),
128 kind: MacroCallKind::FnLike { ast_id: call_id, fragment: FragmentKind::Expr },
130 }); 129 });
131 let arg_file_id: MacroCallId = arg_id.into(); 130 let arg_file_id: MacroCallId = arg_id.into();
132 131
@@ -146,16 +145,17 @@ pub fn expand_eager_macro(
146 let res = eager.expand(db, arg_id, &subtree); 145 let res = eager.expand(db, arg_id, &subtree);
147 146
148 let expanded = diagnostic_sink.expand_result_option(res)?; 147 let expanded = diagnostic_sink.expand_result_option(res)?;
149 let eager = EagerCallLoc { 148 let loc = MacroCallLoc {
150 def, 149 def,
151 fragment: expanded.fragment,
152 subtree: Arc::new(expanded.subtree),
153 krate, 150 krate,
154 call: call_id, 151 eager: Some(EagerCallInfo {
155 included_file: expanded.included_file, 152 expansion: Arc::new(expanded.subtree),
153 included_file: expanded.included_file,
154 }),
155 kind: MacroCallKind::FnLike { ast_id: call_id, fragment: expanded.fragment },
156 }; 156 };
157 157
158 Ok(db.intern_eager_expansion(eager)) 158 Ok(db.intern_macro(loc))
159 } else { 159 } else {
160 panic!("called `expand_eager_macro` on non-eager macro def {:?}", def); 160 panic!("called `expand_eager_macro` on non-eager macro def {:?}", def);
161 } 161 }