Add constructor for Diagnostic that takes Vec<(DiagnosticMessage, Style)>

This commit is contained in:
SLASHLogin 2022-11-09 13:47:46 +01:00
parent 0baac880fc
commit 39895b0716
2 changed files with 16 additions and 2 deletions

View File

@ -1787,8 +1787,7 @@ pub fn check(&self, sess: &Session, blocking: bool) {
match message { match message {
Ok(SharedEmitterMessage::Diagnostic(diag)) => { Ok(SharedEmitterMessage::Diagnostic(diag)) => {
let handler = sess.diagnostic(); let handler = sess.diagnostic();
let mut d = rustc_errors::Diagnostic::new(diag.lvl, String::new()); let mut d = rustc_errors::Diagnostic::new_with_messages(diag.lvl, diag.msg);
d.message = diag.msg;
if let Some(code) = diag.code { if let Some(code) = diag.code {
d.code(code); d.code(code);
} }

View File

@ -213,6 +213,21 @@ pub fn new<M: Into<DiagnosticMessage>>(level: Level, message: M) -> Self {
Diagnostic::new_with_code(level, None, message) Diagnostic::new_with_code(level, None, message)
} }
#[track_caller]
pub fn new_with_messages(level: Level, messages: Vec<(DiagnosticMessage, Style)>) -> Self {
Diagnostic {
level,
message: messages,
code: None,
span: MultiSpan::new(),
children: vec![],
suggestions: Ok(vec![]),
args: Default::default(),
sort_span: DUMMY_SP,
is_lint: false,
}
}
#[track_caller] #[track_caller]
pub fn new_with_code<M: Into<DiagnosticMessage>>( pub fn new_with_code<M: Into<DiagnosticMessage>>(
level: Level, level: Level,