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