diff options
Diffstat (limited to 'crates/hir_expand/src/eager.rs')
-rw-r--r-- | crates/hir_expand/src/eager.rs | 32 |
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..e165b9c5f 100644 --- a/crates/hir_expand/src/eager.rs +++ b/crates/hir_expand/src/eager.rs | |||
@@ -22,7 +22,7 @@ | |||
22 | use crate::{ | 22 | use 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 | ||
28 | use base_db::CrateId; | 28 | use 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(¯o_call.value.token_tree()?).0), | 110 | || Some(mbe::ast_to_token_tree(¯o_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 | arg_or_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 | arg_or_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 | } |