| use std::error::Error; |
| |
| use rustc_macros::{Diagnostic, Subdiagnostic}; |
| |
| #[derive(Diagnostic)] |
| #[diag("could not emit MIR: {$error}")] |
| pub struct CantEmitMIR { |
| pub error: std::io::Error, |
| } |
| |
| #[derive(Diagnostic)] |
| #[diag("failed to read rlink file: `{$err}`")] |
| pub(crate) struct RlinkUnableToRead { |
| pub err: std::io::Error, |
| } |
| |
| #[derive(Diagnostic)] |
| #[diag("the input does not look like a .rlink file")] |
| pub(crate) struct RLinkWrongFileType; |
| |
| #[derive(Diagnostic)] |
| #[diag("the input does not contain version number")] |
| pub(crate) struct RLinkEmptyVersionNumber; |
| |
| #[derive(Diagnostic)] |
| #[diag( |
| ".rlink file was produced with encoding version `{$version_array}`, but the current version is `{$rlink_version}`" |
| )] |
| pub(crate) struct RLinkEncodingVersionMismatch { |
| pub version_array: String, |
| pub rlink_version: u32, |
| } |
| |
| #[derive(Diagnostic)] |
| #[diag( |
| ".rlink file was produced by rustc version `{$rustc_version}`, but the current version is `{$current_version}`" |
| )] |
| pub(crate) struct RLinkRustcVersionMismatch<'a> { |
| pub rustc_version: String, |
| pub current_version: &'a str, |
| } |
| |
| #[derive(Diagnostic)] |
| #[diag("rlink must be a file")] |
| pub(crate) struct RlinkNotAFile; |
| |
| #[derive(Diagnostic)] |
| #[diag("corrupt metadata encountered in `{$file}`")] |
| pub(crate) struct RlinkCorruptFile<'a> { |
| pub file: &'a std::path::Path, |
| } |
| |
| #[derive(Diagnostic)] |
| #[diag("the compiler unexpectedly panicked. This is a bug")] |
| pub(crate) struct Ice; |
| |
| #[derive(Diagnostic)] |
| #[diag("we would appreciate a bug report: {$bug_report_url}")] |
| pub(crate) struct IceBugReport<'a> { |
| pub bug_report_url: &'a str, |
| } |
| |
| #[derive(Diagnostic)] |
| #[diag("please make sure that you have updated to the latest nightly")] |
| pub(crate) struct UpdateNightlyNote; |
| |
| #[derive(Diagnostic)] |
| #[diag( |
| "using internal features is not supported and expected to cause internal compiler errors when used incorrectly" |
| )] |
| pub(crate) struct IceBugReportInternalFeature; |
| |
| #[derive(Diagnostic)] |
| #[diag("rustc {$version} running on {$triple}")] |
| pub(crate) struct IceVersion<'a> { |
| pub version: &'a str, |
| pub triple: &'a str, |
| } |
| |
| #[derive(Diagnostic)] |
| #[diag("please attach the file at `{$path}` to your bug report")] |
| pub(crate) struct IcePath { |
| pub path: std::path::PathBuf, |
| } |
| |
| #[derive(Diagnostic)] |
| #[diag("the ICE couldn't be written to `{$path}`: {$error}")] |
| pub(crate) struct IcePathError { |
| pub path: std::path::PathBuf, |
| pub error: String, |
| #[subdiagnostic] |
| pub env_var: Option<IcePathErrorEnv>, |
| } |
| |
| #[derive(Subdiagnostic)] |
| #[note("the environment variable `RUSTC_ICE` is set to `{$env_var}`")] |
| pub(crate) struct IcePathErrorEnv { |
| pub env_var: std::path::PathBuf, |
| } |
| |
| #[derive(Diagnostic)] |
| #[diag("compiler flags: {$flags}")] |
| pub(crate) struct IceFlags { |
| pub flags: String, |
| } |
| |
| #[derive(Diagnostic)] |
| #[diag("some of the compiler flags provided by cargo are hidden")] |
| pub(crate) struct IceExcludeCargoDefaults; |
| |
| #[derive(Diagnostic)] |
| #[diag("cannot dump feature usage metrics: {$error}")] |
| pub(crate) struct UnstableFeatureUsage { |
| pub error: Box<dyn Error>, |
| } |