| use rustc_macros::SessionDiagnostic; |
| use rustc_span::Span; |
| |
| use crate::ty::Ty; |
| |
| #[derive(SessionDiagnostic)] |
| #[diag(middle::drop_check_overflow, code = "E0320")] |
| #[note] |
| pub struct DropCheckOverflow<'tcx> { |
| #[primary_span] |
| pub span: Span, |
| pub ty: Ty<'tcx>, |
| pub overflow_ty: Ty<'tcx>, |
| } |
| |
| #[derive(SessionDiagnostic)] |
| #[diag(middle::opaque_hidden_type_mismatch)] |
| pub struct OpaqueHiddenTypeMismatch<'tcx> { |
| pub self_ty: Ty<'tcx>, |
| pub other_ty: Ty<'tcx>, |
| #[primary_span] |
| #[label] |
| pub other_span: Span, |
| #[subdiagnostic] |
| pub sub: TypeMismatchReason, |
| } |
| |
| #[derive(SessionSubdiagnostic)] |
| pub enum TypeMismatchReason { |
| #[label(middle::conflict_types)] |
| ConflictType { |
| #[primary_span] |
| span: Span, |
| }, |
| #[note(middle::previous_use_here)] |
| PreviousUse { |
| #[primary_span] |
| span: Span, |
| }, |
| } |
| |
| #[derive(SessionDiagnostic)] |
| #[diag(middle::limit_invalid)] |
| pub struct LimitInvalid<'a> { |
| #[primary_span] |
| pub span: Span, |
| #[label] |
| pub value_span: Span, |
| pub error_str: &'a str, |
| } |