diff options
| author | bors <bors@rust-lang.org> | 2023-08-02 08:03:57 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-08-02 08:03:57 +0000 |
| commit | 5945ef99462d3fc28e8a4fca4bbf4a3b0043a254 (patch) | |
| tree | db57bed1bd1485015092558a5ba0d35c40f0e9e9 | |
| parent | 151c750dac8d2a03a4a1f9c20d2fc29ad2042f02 (diff) | |
| parent | 75607fc34cd6da4e7081dbdb6b8cfaa50a08633e (diff) | |
| download | rust-5945ef99462d3fc28e8a4fca4bbf4a3b0043a254.tar.gz rust-5945ef99462d3fc28e8a4fca4bbf4a3b0043a254.zip | |
Auto merge of #15375 - Veykril:hygiene, r=Veykril
Simplify
| -rw-r--r-- | crates/hir-expand/src/hygiene.rs | 26 | ||||
| -rw-r--r-- | crates/mbe/src/lib.rs | 1 |
2 files changed, 11 insertions, 16 deletions
diff --git a/crates/hir-expand/src/hygiene.rs b/crates/hir-expand/src/hygiene.rs index 54e74d50c87..ade4a592893 100644 --- a/crates/hir-expand/src/hygiene.rs +++ b/crates/hir-expand/src/hygiene.rs @@ -173,7 +173,7 @@ fn make_hygiene_info( db: &dyn ExpandDatabase, macro_file: MacroFile, loc: &MacroCallLoc, -) -> Option<HygieneInfo> { +) -> HygieneInfo { let def = loc.def.ast_id().left().and_then(|id| { let def_tt = match id.to_node(db) { ast::Macro::MacroRules(mac) => mac.token_tree()?, @@ -204,7 +204,7 @@ fn make_hygiene_info( )) }); - Some(HygieneInfo { + HygieneInfo { file: macro_file, attr_input_or_mac_def_start: attr_input_or_mac_def .map(|it| it.map(|tt| tt.syntax().text_range().start())), @@ -212,7 +212,7 @@ fn make_hygiene_info( macro_arg, macro_def, exp_map, - }) + } } impl HygieneFrame { @@ -221,8 +221,7 @@ impl HygieneFrame { None => (None, None, false), Some(macro_file) => { let loc = db.lookup_intern_macro_call(macro_file.macro_call_id); - let info = - make_hygiene_info(db, macro_file, &loc).map(|info| (loc.kind.file_id(), info)); + let info = Some((make_hygiene_info(db, macro_file, &loc), loc.kind.file_id())); match loc.def.kind { MacroDefKind::Declarative(_) => { (info, Some(loc.def.krate), loc.def.local_inner) @@ -236,17 +235,14 @@ impl HygieneFrame { } }; - let (calling_file, info) = match info { - None => { - return HygieneFrame { - expansion: None, - local_inner, - krate, - call_site: None, - def_site: None, - }; + let Some((info, calling_file)) = info else { + return HygieneFrame { + expansion: None, + local_inner, + krate, + call_site: None, + def_site: None, } - Some(it) => it, }; let def_site = info.attr_input_or_mac_def_start.map(|it| db.hygiene_frame(it.file_id)); diff --git a/crates/mbe/src/lib.rs b/crates/mbe/src/lib.rs index 665bce474a6..9d886a1c979 100644 --- a/crates/mbe/src/lib.rs +++ b/crates/mbe/src/lib.rs @@ -28,7 +28,6 @@ use crate::{ tt_iter::TtIter, }; -// FIXME: we probably should re-think `token_tree_to_syntax_node` interfaces pub use self::tt::{Delimiter, DelimiterKind, Punct}; pub use ::parser::TopEntryPoint; |
