rustc_lint/early/
diagnostics.rs1use std::any::Any;
2
3use rustc_data_structures::sync::DynSend;
4use rustc_errors::{Diag, DiagCtxtHandle, Diagnostic, Level};
5use rustc_session::Session;
6
7pub struct DiagAndSess<'sess> {
8 pub callback: Box<
9 dyn for<'b> FnOnce(DiagCtxtHandle<'b>, Level, &dyn Any) -> Diag<'b, ()> + DynSend + 'static,
10 >,
11 pub sess: &'sess Session,
12}
13
14impl<'a> Diagnostic<'a, ()> for DiagAndSess<'_> {
15 fn into_diag(self, dcx: DiagCtxtHandle<'a>, level: Level) -> Diag<'a, ()> {
16 (self.callback)(dcx, level, self.sess)
17 }
18}