Migrate resolver over to internal lint buffer
This commit is contained in:
parent
1bd6b48914
commit
bb0c930f82
10 changed files with 73 additions and 39 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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::
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue