1 use rustc_macros::Diagnostic; 2 use rustc_session::config::CrateType; 3 use rustc_span::{Span, Symbol}; 4 use rustc_target::spec::TargetTriple; 5 6 use std::io; 7 use std::path::Path; 8 9 #[derive(Diagnostic)] 10 #[diag(interface_ferris_identifier)] 11 pub struct FerrisIdentifier { 12 #[primary_span] 13 pub spans: Vec<Span>, 14 #[suggestion(code = "ferris", applicability = "maybe-incorrect")] 15 pub first_span: Span, 16 } 17 18 #[derive(Diagnostic)] 19 #[diag(interface_emoji_identifier)] 20 pub struct EmojiIdentifier { 21 #[primary_span] 22 pub spans: Vec<Span>, 23 pub ident: Symbol, 24 } 25 26 #[derive(Diagnostic)] 27 #[diag(interface_mixed_bin_crate)] 28 pub struct MixedBinCrate; 29 30 #[derive(Diagnostic)] 31 #[diag(interface_mixed_proc_macro_crate)] 32 pub struct MixedProcMacroCrate; 33 34 #[derive(Diagnostic)] 35 #[diag(interface_error_writing_dependencies)] 36 pub struct ErrorWritingDependencies<'a> { 37 pub path: &'a Path, 38 pub error: io::Error, 39 } 40 41 #[derive(Diagnostic)] 42 #[diag(interface_input_file_would_be_overwritten)] 43 pub struct InputFileWouldBeOverWritten<'a> { 44 pub path: &'a Path, 45 } 46 47 #[derive(Diagnostic)] 48 #[diag(interface_generated_file_conflicts_with_directory)] 49 pub struct GeneratedFileConflictsWithDirectory<'a> { 50 pub input_path: &'a Path, 51 pub dir_path: &'a Path, 52 } 53 54 #[derive(Diagnostic)] 55 #[diag(interface_temps_dir_error)] 56 pub struct TempsDirError; 57 58 #[derive(Diagnostic)] 59 #[diag(interface_out_dir_error)] 60 pub struct OutDirError; 61 62 #[derive(Diagnostic)] 63 #[diag(interface_cant_emit_mir)] 64 pub struct CantEmitMIR { 65 pub error: io::Error, 66 } 67 68 #[derive(Diagnostic)] 69 #[diag(interface_rustc_error_fatal)] 70 pub struct RustcErrorFatal { 71 #[primary_span] 72 pub span: Span, 73 } 74 75 #[derive(Diagnostic)] 76 #[diag(interface_rustc_error_unexpected_annotation)] 77 pub struct RustcErrorUnexpectedAnnotation { 78 #[primary_span] 79 pub span: Span, 80 } 81 82 #[derive(Diagnostic)] 83 #[diag(interface_failed_writing_file)] 84 pub struct FailedWritingFile<'a> { 85 pub path: &'a Path, 86 pub error: io::Error, 87 } 88 89 #[derive(Diagnostic)] 90 #[diag(interface_proc_macro_crate_panic_abort)] 91 pub struct ProcMacroCratePanicAbort; 92 93 #[derive(Diagnostic)] 94 #[diag(interface_unsupported_crate_type_for_target)] 95 pub struct UnsupportedCrateTypeForTarget<'a> { 96 pub crate_type: CrateType, 97 pub target_triple: &'a TargetTriple, 98 } 99 100 #[derive(Diagnostic)] 101 #[diag(interface_multiple_output_types_adaption)] 102 pub struct MultipleOutputTypesAdaption; 103 104 #[derive(Diagnostic)] 105 #[diag(interface_ignoring_extra_filename)] 106 pub struct IgnoringExtraFilename; 107 108 #[derive(Diagnostic)] 109 #[diag(interface_ignoring_out_dir)] 110 pub struct IgnoringOutDir; 111 112 #[derive(Diagnostic)] 113 #[diag(interface_multiple_output_types_to_stdout)] 114 pub struct MultipleOutputTypesToStdout; 115