rust/compiler/rustc_codegen_ssa/src/errors.rs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

107 lines
2.7 KiB
Rust
Raw Normal View History

//! Errors emitted by codegen_ssa
use rustc_errors::{DiagnosticArgValue, IntoDiagnosticArg};
use rustc_macros::SessionDiagnostic;
use std::borrow::Cow;
use std::io::Error;
use std::path::{Path, PathBuf};
#[derive(SessionDiagnostic)]
#[diag(codegen_ssa::missing_native_static_library)]
pub struct MissingNativeStaticLibrary<'a> {
pub library_name: &'a str,
}
#[derive(SessionDiagnostic)]
#[diag(codegen_ssa::lib_def_write_failure)]
pub struct LibDefWriteFailure {
pub error: Error,
}
#[derive(SessionDiagnostic)]
#[diag(codegen_ssa::version_script_write_failure)]
pub struct VersionScriptWriteFailure {
pub error: Error,
}
#[derive(SessionDiagnostic)]
#[diag(codegen_ssa::symbol_file_write_failure)]
pub struct SymbolFileWriteFailure {
pub error: Error,
}
#[derive(SessionDiagnostic)]
#[diag(codegen_ssa::unsupported_arch)]
pub struct UnsupportedArch;
#[derive(SessionDiagnostic)]
#[diag(codegen_ssa::msvc_path_not_found)]
pub struct MsvcPathNotFound;
#[derive(SessionDiagnostic)]
#[diag(codegen_ssa::link_exe_not_found)]
pub struct LinkExeNotFound;
#[derive(SessionDiagnostic)]
#[diag(codegen_ssa::ld64_unimplemented_modifier)]
pub struct Ld64UnimplementedModifier;
#[derive(SessionDiagnostic)]
#[diag(codegen_ssa::linker_unsupported_modifier)]
pub struct LinkerUnsupportedModifier;
#[derive(SessionDiagnostic)]
#[diag(codegen_ssa::L4Bender_exporting_symbols_unimplemented)]
pub struct L4BenderExportingSymbolsUnimplemented;
#[derive(SessionDiagnostic)]
#[diag(codegen_ssa::no_natvis_directory)]
pub struct NoNatvisDirectory {
pub error: Error,
}
#[derive(SessionDiagnostic)]
#[diag(codegen_ssa::copy_path_buf)]
pub struct CopyPathBuf {
pub source_file: PathBuf,
pub output_path: PathBuf,
pub error: Error,
}
// Reports Paths using `Debug` implementation rather than Path's `Display` implementation.
#[derive(SessionDiagnostic)]
#[diag(codegen_ssa::copy_path)]
pub struct CopyPath<'a> {
from: DebugArgPath<'a>,
to: DebugArgPath<'a>,
error: Error,
}
impl<'a> CopyPath<'a> {
pub fn new(from: &'a Path, to: &'a Path, error: Error) -> CopyPath<'a> {
CopyPath { from: DebugArgPath { path: from }, to: DebugArgPath { path: to }, error }
}
}
struct DebugArgPath<'a> {
pub path: &'a Path,
}
impl IntoDiagnosticArg for DebugArgPath<'_> {
fn into_diagnostic_arg(self) -> rustc_errors::DiagnosticArgValue<'static> {
DiagnosticArgValue::Str(Cow::Owned(format!("{:?}", self.path)))
}
}
#[derive(SessionDiagnostic)]
#[diag(codegen_ssa::ignoring_emit_path)]
pub struct IgnoringEmitPath {
pub extension: String,
}
#[derive(SessionDiagnostic)]
#[diag(codegen_ssa::ignoring_output)]
pub struct IgnoringOutput {
pub extension: String,
}