diff options
| author | Mark Rousskov <mark.simulacrum@gmail.com> | 2019-10-25 09:15:33 -0400 |
|---|---|---|
| committer | Mark Rousskov <mark.simulacrum@gmail.com> | 2019-11-03 21:52:42 -0500 |
| commit | bb0c930f826bf1929fed70109ecfaaf7e6fbda0d (patch) | |
| tree | 51513d562fd415422a47e21875b152794151e2a8 /src/librustc_resolve | |
| parent | 1bd6b489143879ab5775d7a92627687c4b9b1857 (diff) | |
| download | rust-bb0c930f826bf1929fed70109ecfaaf7e6fbda0d.tar.gz rust-bb0c930f826bf1929fed70109ecfaaf7e6fbda0d.zip | |
Migrate resolver over to internal lint buffer
Diffstat (limited to 'src/librustc_resolve')
| -rw-r--r-- | src/librustc_resolve/check_unused.rs | 6 | ||||
| -rw-r--r-- | src/librustc_resolve/late.rs | 6 | ||||
| -rw-r--r-- | src/librustc_resolve/lib.rs | 16 | ||||
| -rw-r--r-- | src/librustc_resolve/macros.rs | 16 | ||||
| -rw-r--r-- | src/librustc_resolve/resolve_imports.rs | 10 |
5 files changed, 31 insertions, 23 deletions
diff --git a/src/librustc_resolve/check_unused.rs b/src/librustc_resolve/check_unused.rs index 737589acf8d..44b7a9fa047 100644 --- a/src/librustc_resolve/check_unused.rs +++ b/src/librustc_resolve/check_unused.rs @@ -232,7 +232,7 @@ impl Resolver<'_> { directive.span.is_dummy() => { if let ImportDirectiveSubclass::MacroUse = directive.subclass { if !directive.span.is_dummy() { - self.session.buffer_lint( + self.lint_buffer.buffer_lint( lint::builtin::MACRO_USE_EXTERN_CRATE, directive.id, directive.span, @@ -250,7 +250,7 @@ impl Resolver<'_> { ImportDirectiveSubclass::MacroUse => { let lint = lint::builtin::UNUSED_IMPORTS; let msg = "unused `#[macro_use]` import"; - self.session.buffer_lint(lint, directive.id, directive.span, msg); + self.lint_buffer.buffer_lint(lint, directive.id, directive.span, msg); } _ => {} } @@ -312,7 +312,7 @@ impl Resolver<'_> { "remove the unused import" }; - visitor.r.session.buffer_lint_with_diagnostic( + visitor.r.lint_buffer.buffer_lint_with_diagnostic( lint::builtin::UNUSED_IMPORTS, unused.use_tree_id, ms, diff --git a/src/librustc_resolve/late.rs b/src/librustc_resolve/late.rs index 02f4345ac10..004d86cee8d 100644 --- a/src/librustc_resolve/late.rs +++ b/src/librustc_resolve/late.rs @@ -1548,7 +1548,7 @@ impl<'a, 'b> LateResolutionVisitor<'a, '_> { if is_expected(ctor_res) && self.r.is_accessible_from(ctor_vis, self.parent_scope.module) { let lint = lint::builtin::LEGACY_CONSTRUCTOR_VISIBILITY; - self.r.session.buffer_lint(lint, id, span, + self.r.lint_buffer.buffer_lint(lint, id, span, "private struct constructors are not usable through \ re-exports in outer modules", ); @@ -1774,7 +1774,7 @@ impl<'a, 'b> LateResolutionVisitor<'a, '_> { }; if result.base_res() == unqualified_result { let lint = lint::builtin::UNUSED_QUALIFICATIONS; - self.r.session.buffer_lint(lint, id, span, "unnecessary qualification") + self.r.lint_buffer.buffer_lint(lint, id, span, "unnecessary qualification") } } @@ -2111,7 +2111,7 @@ impl<'a> Resolver<'a> { let mut late_resolution_visitor = LateResolutionVisitor::new(self); visit::walk_crate(&mut late_resolution_visitor, krate); for (id, span) in late_resolution_visitor.diagnostic_metadata.unused_labels.iter() { - self.session.buffer_lint(lint::builtin::UNUSED_LABELS, *id, *span, "unused label"); + self.lint_buffer.buffer_lint(lint::builtin::UNUSED_LABELS, *id, *span, "unused label"); } } } diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index cea205a8236..f012606a5ca 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -962,6 +962,8 @@ pub struct Resolver<'a> { /// Stores enum visibilities to properly build a reduced graph /// when visiting the correspondent variants. variant_vis: DefIdMap<ty::Visibility>, + + pub lint_buffer: lint::LintBuffer, } /// Nothing really interesting here; it just provides memory for the rest of the crate. @@ -1088,7 +1090,8 @@ impl<'a> Resolver<'a> { krate: &Crate, crate_name: &str, metadata_loader: &'a MetadataLoaderDyn, - arenas: &'a ResolverArenas<'a>) + arenas: &'a ResolverArenas<'a>, + lint_buffer: lint::LintBuffer) -> Resolver<'a> { let root_def_id = DefId::local(CRATE_DEF_INDEX); let root_module_kind = ModuleKind::Def( @@ -1227,7 +1230,8 @@ impl<'a> Resolver<'a> { features.declared_lib_features.iter().map(|(feat, ..)| *feat) .chain(features.declared_lang_features.iter().map(|(feat, ..)| *feat)) .collect(), - variant_vis: Default::default() + variant_vis: Default::default(), + lint_buffer, } } @@ -1653,7 +1657,7 @@ impl<'a> Resolver<'a> { match result { Ok(binding) => { if let Some(node_id) = poisoned { - self.session.buffer_lint_with_diagnostic( + self.lint_buffer.buffer_lint_with_diagnostic( lint::builtin::PROC_MACRO_DERIVE_RESOLUTION_FALLBACK, node_id, ident.span, &format!("cannot find {} `{}` in this scope", ns.descr(), ident), @@ -2118,7 +2122,7 @@ impl<'a> Resolver<'a> { } fn lint_if_path_starts_with_module( - &self, + &mut self, crate_lint: CrateLint, path: &[Segment], path_span: Span, @@ -2169,7 +2173,7 @@ impl<'a> Resolver<'a> { let diag = lint::builtin::BuiltinLintDiagnostics ::AbsPathWithModule(diag_span); - self.session.buffer_lint_with_diagnostic( + self.lint_buffer.buffer_lint_with_diagnostic( lint::builtin::ABSOLUTE_PATHS_NOT_STARTING_WITH_CRATE, diag_id, diag_span, "absolute paths must start with `self`, `super`, \ @@ -2419,7 +2423,7 @@ impl<'a> Resolver<'a> { for &(span_use, span_def) in &self.macro_expanded_macro_export_errors { let msg = "macro-expanded `macro_export` macros from the current crate \ cannot be referred to by absolute paths"; - self.session.buffer_lint_with_diagnostic( + self.lint_buffer.buffer_lint_with_diagnostic( lint::builtin::MACRO_EXPANDED_MACRO_EXPORTS_ACCESSED_BY_ABSOLUTE_PATHS, CRATE_NODE_ID, span_use, msg, lint::builtin::BuiltinLintDiagnostics:: diff --git a/src/librustc_resolve/macros.rs b/src/librustc_resolve/macros.rs index 8b1b6db3ddc..84d3d3a48b0 100644 --- a/src/librustc_resolve/macros.rs +++ b/src/librustc_resolve/macros.rs @@ -247,9 +247,9 @@ impl<'a> base::Resolver for Resolver<'a> { Ok(InvocationRes::Single(ext)) } - fn check_unused_macros(&self) { + fn check_unused_macros(&mut self) { for (&node_id, &span) in self.unused_macros.iter() { - self.session.buffer_lint( + self.lint_buffer.buffer_lint( lint::builtin::UNUSED_MACROS, node_id, span, "unused macro definition" ); } @@ -789,15 +789,17 @@ impl<'a> Resolver<'a> { } } - fn check_stability_and_deprecation(&self, ext: &SyntaxExtension, path: &ast::Path) { + fn check_stability_and_deprecation(&mut self, ext: &SyntaxExtension, path: &ast::Path) { let span = path.span; if let Some(stability) = &ext.stability { if let StabilityLevel::Unstable { reason, issue, is_soft } = stability.level { let feature = stability.feature; if !self.active_features.contains(&feature) && !span.allows_unstable(feature) { let node_id = ast::CRATE_NODE_ID; - let soft_handler = - |lint, span, msg: &_| self.session.buffer_lint(lint, node_id, span, msg); + let lint_buffer = &mut self.lint_buffer; + let soft_handler = |lint, span, msg: &_| { + lint_buffer.buffer_lint(lint, node_id, span, msg) + }; stability::report_unstable( self.session, feature, reason, issue, is_soft, span, soft_handler ); @@ -807,14 +809,14 @@ impl<'a> Resolver<'a> { let path = pprust::path_to_string(path); let (message, lint) = stability::rustc_deprecation_message(depr, &path); stability::early_report_deprecation( - self.session, &message, depr.suggestion, lint, span + &mut self.lint_buffer, &message, depr.suggestion, lint, span ); } } if let Some(depr) = &ext.deprecation { let path = pprust::path_to_string(&path); let (message, lint) = stability::deprecation_message(depr, &path); - stability::early_report_deprecation(self.session, &message, None, lint, span); + stability::early_report_deprecation(&mut self.lint_buffer, &message, None, lint, span); } } diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs index 03ff8ba7dc1..c39f0c90f98 100644 --- a/src/librustc_resolve/resolve_imports.rs +++ b/src/librustc_resolve/resolve_imports.rs @@ -496,7 +496,7 @@ impl<'a> Resolver<'a> { if let (&NameBindingKind::Res(_, true), &NameBindingKind::Res(_, true)) = (&old_binding.kind, &binding.kind) { - this.session.buffer_lint_with_diagnostic( + this.lint_buffer.buffer_lint_with_diagnostic( DUPLICATE_MACRO_EXPORTS, CRATE_NODE_ID, binding.span, @@ -979,7 +979,9 @@ impl<'a, 'b> ImportResolver<'a, 'b> { !max_vis.get().is_at_least(directive.vis.get(), &*self) { let msg = "glob import doesn't reexport anything because no candidate is public enough"; - self.r.session.buffer_lint(UNUSED_IMPORTS, directive.id, directive.span, msg); + self.r.lint_buffer.buffer_lint( + UNUSED_IMPORTS, directive.id, directive.span, msg, + ); } return None; } @@ -1148,7 +1150,7 @@ impl<'a, 'b> ImportResolver<'a, 'b> { re-exported (error E0365), consider declaring with \ `pub`", ident); - self.r.session.buffer_lint(PUB_USE_OF_PRIVATE_EXTERN_CRATE, + self.r.lint_buffer.buffer_lint(PUB_USE_OF_PRIVATE_EXTERN_CRATE, directive.id, directive.span, &msg); @@ -1273,7 +1275,7 @@ impl<'a, 'b> ImportResolver<'a, 'b> { let mut redundant_spans: Vec<_> = redundant_span.present_items().collect(); redundant_spans.sort(); redundant_spans.dedup(); - self.r.session.buffer_lint_with_diagnostic( + self.r.lint_buffer.buffer_lint_with_diagnostic( UNUSED_IMPORTS, directive.id, directive.span, |
