| use std::error::Error; | |
| use rustc_macros::{Diagnostic, Subdiagnostic}; | |
| #[derive(Diagnostic)] | |
| #[diag("could not emit MIR: {$error}")] | |
| pub(crate) 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>, | |
| } |