Skip to content

Commit 82eeb85

Browse files
committed
prepare for moving BuiltinLintDiagnostics to rustc_session
1 parent d247ac4 commit 82eeb85

File tree

2 files changed

+71
-75
lines changed

2 files changed

+71
-75
lines changed

src/librustc/lint/builtin.rs

Lines changed: 70 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -514,8 +514,10 @@ declare_lint_pass! {
514514
]
515515
}
516516

517-
// this could be a closure, but then implementing derive traits
518-
// becomes hacky (and it gets allocated)
517+
impl LateLintPass<'_, '_> for HardwiredLints {}
518+
519+
// This could be a closure, but then implementing derive trait
520+
// becomes hacky (and it gets allocated).
519521
#[derive(PartialEq)]
520522
pub enum BuiltinLintDiagnostics {
521523
Normal,
@@ -572,86 +574,80 @@ pub fn add_elided_lifetime_in_path_suggestion(
572574
);
573575
}
574576

575-
impl BuiltinLintDiagnostics {
576-
pub fn run(self, sess: &Session, db: &mut DiagnosticBuilder<'_>) {
577-
match self {
578-
BuiltinLintDiagnostics::Normal => (),
579-
BuiltinLintDiagnostics::BareTraitObject(span, is_global) => {
580-
let (sugg, app) = match sess.source_map().span_to_snippet(span) {
581-
Ok(ref s) if is_global => {
582-
(format!("dyn ({})", s), Applicability::MachineApplicable)
583-
}
584-
Ok(s) => (format!("dyn {}", s), Applicability::MachineApplicable),
585-
Err(_) => ("dyn <type>".to_string(), Applicability::HasPlaceholders),
586-
};
587-
db.span_suggestion(span, "use `dyn`", sugg, app);
588-
}
589-
BuiltinLintDiagnostics::AbsPathWithModule(span) => {
590-
let (sugg, app) = match sess.source_map().span_to_snippet(span) {
591-
Ok(ref s) => {
592-
// FIXME(Manishearth) ideally the emitting code
593-
// can tell us whether or not this is global
594-
let opt_colon = if s.trim_start().starts_with("::") { "" } else { "::" };
595-
596-
(format!("crate{}{}", opt_colon, s), Applicability::MachineApplicable)
597-
}
598-
Err(_) => ("crate::<path>".to_string(), Applicability::HasPlaceholders),
599-
};
600-
db.span_suggestion(span, "use `crate`", sugg, app);
601-
}
602-
BuiltinLintDiagnostics::ProcMacroDeriveResolutionFallback(span) => {
603-
db.span_label(
604-
span,
605-
"names from parent modules are not \
606-
accessible without an explicit import",
607-
);
608-
}
609-
BuiltinLintDiagnostics::MacroExpandedMacroExportsAccessedByAbsolutePaths(span_def) => {
610-
db.span_note(span_def, "the macro is defined here");
611-
}
612-
BuiltinLintDiagnostics::ElidedLifetimesInPaths(
577+
pub fn run_builtin_lint_diagnostics(
578+
this: BuiltinLintDiagnostics,
579+
sess: &Session,
580+
db: &mut DiagnosticBuilder<'_>,
581+
) {
582+
match this {
583+
BuiltinLintDiagnostics::Normal => (),
584+
BuiltinLintDiagnostics::BareTraitObject(span, is_global) => {
585+
let (sugg, app) = match sess.source_map().span_to_snippet(span) {
586+
Ok(s) if is_global => (format!("dyn ({})", s), Applicability::MachineApplicable),
587+
Ok(s) => (format!("dyn {}", s), Applicability::MachineApplicable),
588+
Err(_) => ("dyn <type>".to_string(), Applicability::HasPlaceholders),
589+
};
590+
db.span_suggestion(span, "use `dyn`", sugg, app);
591+
}
592+
BuiltinLintDiagnostics::AbsPathWithModule(span) => {
593+
let (sugg, app) = match sess.source_map().span_to_snippet(span) {
594+
Ok(ref s) => {
595+
// FIXME(Manishearth) ideally the emitting code
596+
// can tell us whether or not this is global
597+
let opt_colon = if s.trim_start().starts_with("::") { "" } else { "::" };
598+
599+
(format!("crate{}{}", opt_colon, s), Applicability::MachineApplicable)
600+
}
601+
Err(_) => ("crate::<path>".to_string(), Applicability::HasPlaceholders),
602+
};
603+
db.span_suggestion(span, "use `crate`", sugg, app);
604+
}
605+
BuiltinLintDiagnostics::ProcMacroDeriveResolutionFallback(span) => {
606+
db.span_label(
607+
span,
608+
"names from parent modules are not accessible without an explicit import",
609+
);
610+
}
611+
BuiltinLintDiagnostics::MacroExpandedMacroExportsAccessedByAbsolutePaths(span_def) => {
612+
db.span_note(span_def, "the macro is defined here");
613+
}
614+
BuiltinLintDiagnostics::ElidedLifetimesInPaths(
615+
n,
616+
path_span,
617+
incl_angl_brckt,
618+
insertion_span,
619+
anon_lts,
620+
) => {
621+
add_elided_lifetime_in_path_suggestion(
622+
sess,
623+
db,
613624
n,
614625
path_span,
615626
incl_angl_brckt,
616627
insertion_span,
617628
anon_lts,
618-
) => {
619-
add_elided_lifetime_in_path_suggestion(
620-
sess,
621-
db,
622-
n,
623-
path_span,
624-
incl_angl_brckt,
625-
insertion_span,
626-
anon_lts,
629+
);
630+
}
631+
BuiltinLintDiagnostics::UnknownCrateTypes(span, note, sugg) => {
632+
db.span_suggestion(span, &note, sugg, Applicability::MaybeIncorrect);
633+
}
634+
BuiltinLintDiagnostics::UnusedImports(message, replaces) => {
635+
if !replaces.is_empty() {
636+
db.tool_only_multipart_suggestion(
637+
&message,
638+
replaces,
639+
Applicability::MachineApplicable,
627640
);
628641
}
629-
BuiltinLintDiagnostics::UnknownCrateTypes(span, note, sugg) => {
630-
db.span_suggestion(span, &note, sugg, Applicability::MaybeIncorrect);
631-
}
632-
BuiltinLintDiagnostics::UnusedImports(message, replaces) => {
633-
if !replaces.is_empty() {
634-
db.tool_only_multipart_suggestion(
635-
&message,
636-
replaces,
637-
Applicability::MachineApplicable,
638-
);
639-
}
640-
}
641-
BuiltinLintDiagnostics::RedundantImport(spans, ident) => {
642-
for (span, is_imported) in spans {
643-
let introduced = if is_imported { "imported" } else { "defined" };
644-
db.span_label(
645-
span,
646-
format!("the item `{}` is already {} here", ident, introduced),
647-
);
648-
}
649-
}
650-
BuiltinLintDiagnostics::DeprecatedMacro(suggestion, span) => {
651-
stability::deprecation_suggestion(db, suggestion, span)
642+
}
643+
BuiltinLintDiagnostics::RedundantImport(spans, ident) => {
644+
for (span, is_imported) in spans {
645+
let introduced = if is_imported { "imported" } else { "defined" };
646+
db.span_label(span, format!("the item `{}` is already {} here", ident, introduced));
652647
}
653648
}
649+
BuiltinLintDiagnostics::DeprecatedMacro(suggestion, span) => {
650+
stability::deprecation_suggestion(db, suggestion, span)
651+
}
654652
}
655653
}
656-
657-
impl<'a, 'tcx> LateLintPass<'a, 'tcx> for HardwiredLints {}

src/librustc/lint/context.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,7 @@ pub trait LintContext: Sized {
495495
diagnostic: BuiltinLintDiagnostics,
496496
) {
497497
let mut db = self.lookup(lint, span, msg);
498-
diagnostic.run(self.sess(), &mut db);
498+
super::builtin::run_builtin_lint_diagnostics(diagnostic, self.sess(), &mut db);
499499
db.emit();
500500
}
501501

0 commit comments

Comments
 (0)