diff options
| author | Adrian Tombu <adrian@otso.fr> | 2022-08-25 18:05:23 +0200 |
|---|---|---|
| committer | Adrian Tombu <adrian@otso.fr> | 2022-08-25 18:06:12 +0200 |
| commit | bf7ce6a1a605d897832783a3d0c830d2466d90be (patch) | |
| tree | 0cfe77db4e3da1baf1ed226dae282880de6837a6 /compiler/rustc_codegen_ssa/src | |
| parent | 3f883b850d81be5ba6a2a4039de33fd7dd7c188d (diff) | |
| download | rust-bf7ce6a1a605d897832783a3d0c830d2466d90be.tar.gz rust-bf7ce6a1a605d897832783a3d0c830d2466d90be.zip | |
Replace spaghetti with a simple errors enum
Diffstat (limited to 'compiler/rustc_codegen_ssa/src')
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/lib.rs | 33 | ||||
| -rw-r--r-- | compiler/rustc_codegen_ssa/src/session_diagnostic.rs | 42 |
2 files changed, 16 insertions, 59 deletions
diff --git a/compiler/rustc_codegen_ssa/src/lib.rs b/compiler/rustc_codegen_ssa/src/lib.rs index deabdca75cb..d6fa1a15373 100644 --- a/compiler/rustc_codegen_ssa/src/lib.rs +++ b/compiler/rustc_codegen_ssa/src/lib.rs @@ -21,7 +21,6 @@ extern crate tracing; #[macro_use] extern crate rustc_middle; -use crate::session_diagnostic::{DeserializeRlinkError, DeserializeRlinkErrorSub}; use rustc_ast as ast; use rustc_data_structures::fx::{FxHashMap, FxHashSet}; use rustc_data_structures::sync::Lrc; @@ -50,7 +49,6 @@ pub mod glue; pub mod meth; pub mod mir; pub mod mono_item; -pub mod session_diagnostic; pub mod target_features; pub mod traits; @@ -170,6 +168,13 @@ pub struct CodegenResults { pub crate_info: CrateInfo, } +pub enum CodegenErrors { + WrongFileType, + EmptyVersionNumber, + EncodingVersionMismatch { version_array: String, rlink_version: String }, + RustcVersionMismatch { rustc_version: String, current_version: String }, +} + pub fn provide(providers: &mut Providers) { crate::back::symbol_export::provide(providers); crate::base::provide(providers); @@ -214,27 +219,23 @@ impl CodegenResults { encoder.finish() } - pub fn deserialize_rlink(data: Vec<u8>) -> Result<Self, DeserializeRlinkError> { + pub fn deserialize_rlink(data: Vec<u8>) -> Result<Self, CodegenErrors> { // The Decodable machinery is not used here because it panics if the input data is invalid // and because its internal representation may change. if !data.starts_with(RLINK_MAGIC) { - return Err(DeserializeRlinkError { sub: DeserializeRlinkErrorSub::WrongFileType }); + return Err(CodegenErrors::WrongFileType); } let data = &data[RLINK_MAGIC.len()..]; if data.len() < 4 { - return Err(DeserializeRlinkError { - sub: DeserializeRlinkErrorSub::EmptyVersionNumber, - }); + return Err(CodegenErrors::EmptyVersionNumber); } let mut version_array: [u8; 4] = Default::default(); version_array.copy_from_slice(&data[..4]); if u32::from_be_bytes(version_array) != RLINK_VERSION { - return Err(DeserializeRlinkError { - sub: DeserializeRlinkErrorSub::EncodingVersionMismatch { - version_array: String::from_utf8_lossy(&version_array).to_string(), - rlink_version: RLINK_VERSION.to_string(), - }, + return Err(CodegenErrors::EncodingVersionMismatch { + version_array: String::from_utf8_lossy(&version_array).to_string(), + rlink_version: RLINK_VERSION.to_string(), }); } @@ -242,11 +243,9 @@ impl CodegenResults { let rustc_version = decoder.read_str(); let current_version = RUSTC_VERSION.unwrap(); if rustc_version != current_version { - return Err(DeserializeRlinkError { - sub: DeserializeRlinkErrorSub::RustcVersionMismatch { - rustc_version: rustc_version.to_string(), - current_version: current_version.to_string(), - }, + return Err(CodegenErrors::RustcVersionMismatch { + rustc_version: rustc_version.to_string(), + current_version: current_version.to_string(), }); } diff --git a/compiler/rustc_codegen_ssa/src/session_diagnostic.rs b/compiler/rustc_codegen_ssa/src/session_diagnostic.rs deleted file mode 100644 index ac7065ae23c..00000000000 --- a/compiler/rustc_codegen_ssa/src/session_diagnostic.rs +++ /dev/null @@ -1,42 +0,0 @@ -use rustc_errors::{fluent, DiagnosticArgValue, IntoDiagnosticArg}; -use rustc_macros::{SessionDiagnostic, SessionSubdiagnostic}; -use std::borrow::Cow; - -#[derive(SessionDiagnostic)] -#[diag(codegen_ssa::error)] -pub struct DeserializeRlinkError { - #[subdiagnostic] - pub sub: DeserializeRlinkErrorSub, -} - -#[derive(SessionSubdiagnostic)] -pub enum DeserializeRlinkErrorSub { - #[note(codegen_ssa::wrong_file_type)] - WrongFileType, - - #[note(codegen_ssa::empty_version_number)] - EmptyVersionNumber, - - #[note(codegen_ssa::encoding_version_mismatch)] - EncodingVersionMismatch { version_array: String, rlink_version: String }, - - #[note(codegen_ssa::rustc_version_mismatch)] - RustcVersionMismatch { rustc_version: String, current_version: String }, -} - -impl IntoDiagnosticArg for DeserializeRlinkErrorSub { - fn into_diagnostic_arg(self) -> DiagnosticArgValue<'static> { - DiagnosticArgValue::Str(Cow::Borrowed(match self { - DeserializeRlinkErrorSub::WrongFileType => fluent::codegen_ssa::wrong_file_type, - DeserializeRlinkErrorSub::EmptyVersionNumber => { - fluent::codegen_ssa::empty_version_number - } - DeserializeRlinkErrorSub::EncodingVersionMismatch { version_array, rlink_version } => { - fluent::codegen_ssa::encoding_version_mismatch - } - DeserializeRlinkErrorSub::RustcVersionMismatch { rustc_version, current_version } => { - fluent::codegen_ssa::rustc_version_mismatch - } - })) - } -} |
