Skip to main content

rustc_lint/early/
diagnostics.rs

1use 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}