From 9a3bb19d3274824d6648117ab32ac59358ff1f14 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Tue, 24 Nov 2020 21:52:19 +0100 Subject: Remove fixed FIXME, propagate errors better --- crates/hir_expand/src/db.rs | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) (limited to 'crates/hir_expand/src') diff --git a/crates/hir_expand/src/db.rs b/crates/hir_expand/src/db.rs index fc512517c..3fd9a90a8 100644 --- a/crates/hir_expand/src/db.rs +++ b/crates/hir_expand/src/db.rs @@ -359,11 +359,7 @@ pub fn parse_macro_with_arg( match result.error { Some(error) => { - // FIXME: - // In future, we should propagate the actual error with recovery information - // instead of ignore the error here. - - // Safe check for recurisve identity macro + // Safety check for recursive identity macro. let node = parse.syntax_node(); let file: HirFileId = macro_file.into(); let call_node = match file.call_node(db) { @@ -374,7 +370,7 @@ pub fn parse_macro_with_arg( }; if !diff(&node, &call_node.value).is_empty() { - MacroResult { value: Some((parse, Arc::new(rev_token_map))), error: None } + MacroResult { value: Some((parse, Arc::new(rev_token_map))), error: Some(error) } } else { return MacroResult::error(error); } -- cgit v1.2.3 From f9d0d511011b7071c621ac3f7c64c4aaec7f2dfb Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Tue, 24 Nov 2020 21:55:08 +0100 Subject: hir_expand::db: reduce fn visibility --- crates/hir_expand/src/db.rs | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) (limited to 'crates/hir_expand/src') diff --git a/crates/hir_expand/src/db.rs b/crates/hir_expand/src/db.rs index 3fd9a90a8..36d3307a1 100644 --- a/crates/hir_expand/src/db.rs +++ b/crates/hir_expand/src/db.rs @@ -138,16 +138,13 @@ pub fn expand_hypothetical( Some((node.syntax_node(), token)) } -pub(crate) fn ast_id_map(db: &dyn AstDatabase, file_id: HirFileId) -> Arc { +fn ast_id_map(db: &dyn AstDatabase, file_id: HirFileId) -> Arc { let map = db.parse_or_expand(file_id).map_or_else(AstIdMap::default, |it| AstIdMap::from_source(&it)); Arc::new(map) } -pub(crate) fn macro_def( - db: &dyn AstDatabase, - id: MacroDefId, -) -> Option> { +fn macro_def(db: &dyn AstDatabase, id: MacroDefId) -> Option> { match id.kind { MacroDefKind::Declarative => { let macro_call = id.ast_id?.to_node(db); @@ -178,7 +175,7 @@ pub(crate) fn macro_def( } } -pub(crate) fn macro_arg_text(db: &dyn AstDatabase, id: MacroCallId) -> Option { +fn macro_arg_text(db: &dyn AstDatabase, id: MacroCallId) -> Option { let id = match id { MacroCallId::LazyMacro(id) => id, MacroCallId::EagerMacro(_id) => { @@ -191,16 +188,13 @@ pub(crate) fn macro_arg_text(db: &dyn AstDatabase, id: MacroCallId) -> Option Option> { +fn macro_arg(db: &dyn AstDatabase, id: MacroCallId) -> Option> { let arg = db.macro_arg_text(id)?; let (tt, tmap) = mbe::syntax_node_to_token_tree(&SyntaxNode::new_root(arg))?; Some(Arc::new((tt, tmap))) } -pub(crate) fn macro_expand(db: &dyn AstDatabase, id: MacroCallId) -> MacroResult> { +fn macro_expand(db: &dyn AstDatabase, id: MacroCallId) -> MacroResult> { macro_expand_with_arg(db, id, None) } @@ -258,7 +252,7 @@ fn macro_expand_with_arg( MacroResult { value: Some(Arc::new(tt)), error: err.map(|e| format!("{:?}", e)) } } -pub(crate) fn expand_proc_macro( +fn expand_proc_macro( db: &dyn AstDatabase, id: MacroCallId, ) -> Result { @@ -285,7 +279,7 @@ pub(crate) fn expand_proc_macro( expander.expand(db, lazy_id, ¯o_arg.0) } -pub(crate) fn parse_or_expand(db: &dyn AstDatabase, file_id: HirFileId) -> Option { +fn parse_or_expand(db: &dyn AstDatabase, file_id: HirFileId) -> Option { match file_id.0 { HirFileIdRepr::FileId(file_id) => Some(db.parse(file_id).tree().syntax().clone()), HirFileIdRepr::MacroFile(macro_file) => { @@ -294,14 +288,14 @@ pub(crate) fn parse_or_expand(db: &dyn AstDatabase, file_id: HirFileId) -> Optio } } -pub(crate) fn parse_macro( +fn parse_macro( db: &dyn AstDatabase, macro_file: MacroFile, ) -> MacroResult<(Parse, Arc)> { parse_macro_with_arg(db, macro_file, None) } -pub fn parse_macro_with_arg( +fn parse_macro_with_arg( db: &dyn AstDatabase, macro_file: MacroFile, arg: Option>, -- cgit v1.2.3 From 9559bce311c3b6b7009b9cd09e52c75497c87035 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Tue, 24 Nov 2020 21:57:51 +0100 Subject: Rename `parse_macro` to `parse_macro_expansion` This does not parse macros, it expands a macro and parses the *result* --- crates/hir_expand/src/db.rs | 6 +++--- crates/hir_expand/src/lib.rs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'crates/hir_expand/src') diff --git a/crates/hir_expand/src/db.rs b/crates/hir_expand/src/db.rs index 36d3307a1..a9099eb22 100644 --- a/crates/hir_expand/src/db.rs +++ b/crates/hir_expand/src/db.rs @@ -88,7 +88,7 @@ pub trait AstDatabase: SourceDatabase { #[salsa::transparent] fn macro_arg(&self, id: MacroCallId) -> Option>; fn macro_def(&self, id: MacroDefId) -> Option>; - fn parse_macro( + fn parse_macro_expansion( &self, macro_file: MacroFile, ) -> MacroResult<(Parse, Arc)>; @@ -283,12 +283,12 @@ fn parse_or_expand(db: &dyn AstDatabase, file_id: HirFileId) -> Option Some(db.parse(file_id).tree().syntax().clone()), HirFileIdRepr::MacroFile(macro_file) => { - db.parse_macro(macro_file).map(|(it, _)| it.syntax_node()).value + db.parse_macro_expansion(macro_file).map(|(it, _)| it.syntax_node()).value } } } -fn parse_macro( +fn parse_macro_expansion( db: &dyn AstDatabase, macro_file: MacroFile, ) -> MacroResult<(Parse, Arc)> { diff --git a/crates/hir_expand/src/lib.rs b/crates/hir_expand/src/lib.rs index 9fc697d6f..83e09738b 100644 --- a/crates/hir_expand/src/lib.rs +++ b/crates/hir_expand/src/lib.rs @@ -144,7 +144,7 @@ impl HirFileId { let def_tt = loc.def.ast_id?.to_node(db).token_tree()?; let macro_def = db.macro_def(loc.def)?; - let (parse, exp_map) = db.parse_macro(macro_file).value?; + let (parse, exp_map) = db.parse_macro_expansion(macro_file).value?; let macro_arg = db.macro_arg(macro_file.macro_call_id)?; Some(ExpansionInfo { -- cgit v1.2.3