mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-02 07:22:42 +00:00
sess: add create_{err,warning}
Currently, the only API for creating errors from a diagnostic derive will emit it immediately. This makes it difficult to add subdiagnostics to diagnostics from the derive, so add `create_{err,warning}` functions that return the diagnostic without emitting it. Signed-off-by: David Wood <david.wood@huawei.com>
This commit is contained in:
parent
859079ff12
commit
3f413d2abb
@ -289,12 +289,26 @@ impl ParseSess {
|
||||
self.proc_macro_quoted_spans.lock().clone()
|
||||
}
|
||||
|
||||
pub fn create_err<'a>(
|
||||
&'a self,
|
||||
err: impl SessionDiagnostic<'a>,
|
||||
) -> DiagnosticBuilder<'a, ErrorGuaranteed> {
|
||||
err.into_diagnostic(self)
|
||||
}
|
||||
|
||||
pub fn emit_err<'a>(&'a self, err: impl SessionDiagnostic<'a>) -> ErrorGuaranteed {
|
||||
err.into_diagnostic(self).emit()
|
||||
self.create_err(err).emit()
|
||||
}
|
||||
|
||||
pub fn create_warning<'a>(
|
||||
&'a self,
|
||||
warning: impl SessionDiagnostic<'a, ()>,
|
||||
) -> DiagnosticBuilder<'a, ()> {
|
||||
warning.into_diagnostic(self)
|
||||
}
|
||||
|
||||
pub fn emit_warning<'a>(&'a self, warning: impl SessionDiagnostic<'a, ()>) {
|
||||
warning.into_diagnostic(self).emit()
|
||||
self.create_warning(warning).emit()
|
||||
}
|
||||
|
||||
pub fn struct_err(
|
||||
|
@ -413,9 +413,21 @@ impl Session {
|
||||
pub fn err(&self, msg: impl Into<DiagnosticMessage>) -> ErrorGuaranteed {
|
||||
self.diagnostic().err(msg)
|
||||
}
|
||||
pub fn create_err<'a>(
|
||||
&'a self,
|
||||
err: impl SessionDiagnostic<'a>,
|
||||
) -> DiagnosticBuilder<'a, ErrorGuaranteed> {
|
||||
self.parse_sess.create_err(err)
|
||||
}
|
||||
pub fn emit_err<'a>(&'a self, err: impl SessionDiagnostic<'a>) -> ErrorGuaranteed {
|
||||
self.parse_sess.emit_err(err)
|
||||
}
|
||||
pub fn create_warning<'a>(
|
||||
&'a self,
|
||||
err: impl SessionDiagnostic<'a, ()>,
|
||||
) -> DiagnosticBuilder<'a, ()> {
|
||||
self.parse_sess.create_warning(err)
|
||||
}
|
||||
pub fn emit_warning<'a>(&'a self, warning: impl SessionDiagnostic<'a, ()>) {
|
||||
self.parse_sess.emit_warning(warning)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user