diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2019-08-13 02:13:36 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2019-08-15 20:40:47 +0300 |
| commit | 310ee4d98c9a421487914d12474f121a75197bf2 (patch) | |
| tree | d568ab6310ba03ef65afb10f965197747d4f3e22 | |
| parent | ea68bc85e01c17bdef5a593188d7a185c6014302 (diff) | |
| download | rust-310ee4d98c9a421487914d12474f121a75197bf2.tar.gz rust-310ee4d98c9a421487914d12474f121a75197bf2.zip | |
resolve: Privatize `BuildReducedGraphVisitor`
| -rw-r--r-- | src/librustc_resolve/build_reduced_graph.rs | 27 | ||||
| -rw-r--r-- | src/librustc_resolve/diagnostics.rs | 2 | ||||
| -rw-r--r-- | src/librustc_resolve/lib.rs | 5 | ||||
| -rw-r--r-- | src/librustc_resolve/macros.rs | 7 |
4 files changed, 23 insertions, 18 deletions
diff --git a/src/librustc_resolve/build_reduced_graph.rs b/src/librustc_resolve/build_reduced_graph.rs index bfb7844b543..d8799f8332f 100644 --- a/src/librustc_resolve/build_reduced_graph.rs +++ b/src/librustc_resolve/build_reduced_graph.rs @@ -30,6 +30,7 @@ use syntax::attr; use syntax::ast::{self, Block, ForeignItem, ForeignItemKind, Item, ItemKind, NodeId}; use syntax::ast::{MetaItemKind, StmtKind, TraitItem, TraitItemKind, Variant}; use syntax::ext::base::{MacroKind, SyntaxExtension}; +use syntax::ext::expand::AstFragment; use syntax::ext::hygiene::ExpnId; use syntax::feature_gate::is_builtin_attr; use syntax::parse::token::{self, Token}; @@ -67,7 +68,7 @@ impl<'a> ToNameBinding<'a> for (Res, ty::Visibility, Span, ExpnId) { } } -pub(crate) struct IsMacroExport; +struct IsMacroExport; impl<'a> ToNameBinding<'a> for (Res, ty::Visibility, Span, ExpnId, IsMacroExport) { fn to_name_binding(self, arenas: &'a ResolverArenas<'a>) -> &'a NameBinding<'a> { @@ -84,7 +85,7 @@ impl<'a> ToNameBinding<'a> for (Res, ty::Visibility, Span, ExpnId, IsMacroExport impl<'a> Resolver<'a> { /// Defines `name` in namespace `ns` of module `parent` to be `def` if it is not yet defined; /// otherwise, reports an error. - pub fn define<T>(&mut self, parent: Module<'a>, ident: Ident, ns: Namespace, def: T) + crate fn define<T>(&mut self, parent: Module<'a>, ident: Ident, ns: Namespace, def: T) where T: ToNameBinding<'a>, { let binding = def.to_name_binding(self.arenas); @@ -93,7 +94,7 @@ impl<'a> Resolver<'a> { } } - pub fn get_module(&mut self, def_id: DefId) -> Module<'a> { + crate fn get_module(&mut self, def_id: DefId) -> Module<'a> { if def_id.krate == LOCAL_CRATE { return self.module_map[&def_id] } @@ -119,7 +120,7 @@ impl<'a> Resolver<'a> { module } - pub fn macro_def_scope(&mut self, expn_id: ExpnId) -> Module<'a> { + crate fn macro_def_scope(&mut self, expn_id: ExpnId) -> Module<'a> { let def_id = match self.macro_defs.get(&expn_id) { Some(def_id) => *def_id, None => return self.graph_root, @@ -141,7 +142,7 @@ impl<'a> Resolver<'a> { } } - crate fn get_macro_by_def_id(&mut self, def_id: DefId) -> Option<Lrc<SyntaxExtension>> { + fn get_macro_by_def_id(&mut self, def_id: DefId) -> Option<Lrc<SyntaxExtension>> { if let Some(ext) = self.macro_map.get(&def_id) { return Some(ext.clone()); } @@ -158,7 +159,7 @@ impl<'a> Resolver<'a> { /// Ensures that the reduced graph rooted at the given external module /// is built, building it if it is not. - pub fn populate_module_if_necessary(&mut self, module: Module<'a>) { + crate fn populate_module_if_necessary(&mut self, module: Module<'a>) { if module.populated.get() { return } let def_id = module.def_id().unwrap(); for child in self.cstore.item_children_untracked(def_id, self.session) { @@ -168,11 +169,19 @@ impl<'a> Resolver<'a> { } module.populated.set(true) } + + crate fn build_reduced_graph( + &mut self, fragment: &AstFragment, parent_scope: ParentScope<'a> + ) -> LegacyScope<'a> { + let mut visitor = BuildReducedGraphVisitor { r: self, parent_scope }; + fragment.visit_with(&mut visitor); + visitor.parent_scope.legacy + } } -pub struct BuildReducedGraphVisitor<'a, 'b> { - pub r: &'b mut Resolver<'a>, - pub parent_scope: ParentScope<'a>, +struct BuildReducedGraphVisitor<'a, 'b> { + r: &'b mut Resolver<'a>, + parent_scope: ParentScope<'a>, } impl<'a, 'b> BuildReducedGraphVisitor<'a, 'b> { diff --git a/src/librustc_resolve/diagnostics.rs b/src/librustc_resolve/diagnostics.rs index 8ec5d64ef3d..861b0fd44ac 100644 --- a/src/librustc_resolve/diagnostics.rs +++ b/src/librustc_resolve/diagnostics.rs @@ -455,7 +455,7 @@ impl<'a> Resolver<'a> { let mut tmp_suggestions = Vec::new(); add_module_candidates(prelude, &mut tmp_suggestions, filter_fn); suggestions.extend(tmp_suggestions.into_iter().filter(|s| { - use_prelude || this.is_builtin_macro(s.res.opt_def_id()) + use_prelude || this.is_builtin_macro(s.res) })); } } diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index b0944b480a2..0cf9aa72d78 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -1196,9 +1196,8 @@ impl<'a> Resolver<'a> { f(self, MacroNS); } - fn is_builtin_macro(&mut self, def_id: Option<DefId>) -> bool { - def_id.and_then(|def_id| self.get_macro_by_def_id(def_id)) - .map_or(false, |ext| ext.is_builtin) + fn is_builtin_macro(&mut self, res: Res) -> bool { + self.get_macro(res).map_or(false, |ext| ext.is_builtin) } fn macro_def(&self, mut ctxt: SyntaxContext) -> DefId { diff --git a/src/librustc_resolve/macros.rs b/src/librustc_resolve/macros.rs index dd8e3407031..0a63dd2558d 100644 --- a/src/librustc_resolve/macros.rs +++ b/src/librustc_resolve/macros.rs @@ -3,7 +3,6 @@ use crate::{CrateLint, Resolver, ResolutionError, Scope, ScopeSet, ParentScope, use crate::{ModuleKind, NameBinding, PathResult, Segment, ToNameBinding}; use crate::{ModuleOrUniformRoot, KNOWN_TOOLS}; use crate::Namespace::*; -use crate::build_reduced_graph::BuildReducedGraphVisitor; use crate::resolve_imports::ImportResolver; use rustc::hir::def::{self, DefKind, NonMacroAttrKind}; use rustc::hir::map::DefCollector; @@ -131,9 +130,7 @@ impl<'a> base::Resolver for Resolver<'a> { // We are inside the `expansion` new, but other parent scope components are still the same. fragment.visit_with(&mut DefCollector::new(&mut self.definitions, expansion)); let parent_scope = ParentScope { expansion, ..parent_scope }; - let mut visitor = BuildReducedGraphVisitor { r: self, parent_scope }; - fragment.visit_with(&mut visitor); - let output_legacy_scope = visitor.parent_scope.legacy; + let output_legacy_scope = self.build_reduced_graph(fragment, parent_scope); self.output_legacy_scopes.insert(expansion, output_legacy_scope); } @@ -530,7 +527,7 @@ impl<'a> Resolver<'a> { false, path_span, ) { - if use_prelude || this.is_builtin_macro(binding.res().opt_def_id()) { + if use_prelude || this.is_builtin_macro(binding.res()) { result = Ok((binding, Flags::PRELUDE | Flags::MISC_FROM_PRELUDE)); } } |
