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}