Port "BorrowedTooLong" diagnostic

This commit is contained in:
Nikita Tomashevich 2023-01-19 17:35:09 +03:00 committed by IQuant
parent 8fc5ba65e1
commit 58e901b6fd
4 changed files with 45 additions and 7 deletions

View file

@ -970,3 +970,13 @@ pub struct LfBoundNotSatisfied<'a> {
#[subdiagnostic]
pub notes: Vec<note_and_explain::RegionExplanation<'a>>,
}
#[derive(Diagnostic)]
#[diag(infer_borrowed_too_long, code = "E0490")]
pub struct BorrowedTooLong<'a> {
#[primary_span]
pub span: Span,
pub ty: Ty<'a>,
#[subdiagnostic]
pub notes: Vec<note_and_explain::RegionExplanation<'a>>,
}

View file

@ -123,12 +123,14 @@ pub enum PrefixKind {
Empty,
RefValidFor,
ContentValidFor,
TypeValidFor,
TypeObjValidFor,
SourcePointerValidFor,
TypeSatisfy,
TypeOutlive,
LfInstantiatedWith,
LfMustOutlive,
TypeValidFor,
BorrowLastsFor,
}
pub enum SuffixKind {
@ -143,12 +145,14 @@ impl IntoDiagnosticArg for PrefixKind {
Self::Empty => "empty",
Self::RefValidFor => "ref_valid_for",
Self::ContentValidFor => "content_valid_for",
Self::TypeValidFor => "type_valid_for",
Self::TypeObjValidFor => "type_obj_valid_for",
Self::SourcePointerValidFor => "source_pointer_valid_for",
Self::TypeSatisfy => "type_satisfy",
Self::TypeOutlive => "type_outlive",
Self::LfInstantiatedWith => "lf_instantiated_with",
Self::LfMustOutlive => "lf_must_outlive",
Self::TypeValidFor => "type_valid_for",
Self::BorrowLastsFor => "borrow_lasts_for",
}
.into();
rustc_errors::DiagnosticArgValue::Str(kind)