about summary refs log tree commit diff
path: root/compiler/rustc_codegen_ssa/src
diff options
context:
space:
mode:
authorAdrian Tombu <adrian@otso.fr>2022-08-25 18:05:23 +0200
committerAdrian Tombu <adrian@otso.fr>2022-08-25 18:06:12 +0200
commitbf7ce6a1a605d897832783a3d0c830d2466d90be (patch)
tree0cfe77db4e3da1baf1ed226dae282880de6837a6 /compiler/rustc_codegen_ssa/src
parent3f883b850d81be5ba6a2a4039de33fd7dd7c188d (diff)
downloadrust-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.rs33
-rw-r--r--compiler/rustc_codegen_ssa/src/session_diagnostic.rs42
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
-            }
-        }))
-    }
-}