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_crate_name_does_not_match)]
9pub(crate) struct CrateNameDoesNotMatch {
10 #[primary_span]
11 pub(crate) span: Span,
12 pub(crate) crate_name: Symbol,
13 pub(crate) attr_crate_name: Symbol,
14}
15
16#[derive(Diagnostic)]
17#[diag(interface_crate_name_invalid)]
18pub(crate) struct CrateNameInvalid<'a> {
19 pub(crate) crate_name: &'a str,
20}
21
22#[derive(Diagnostic)]
23#[diag(interface_ferris_identifier)]
24pub struct FerrisIdentifier {
25 #[primary_span]
26 pub spans: Vec<Span>,
27 #[suggestion(code = "{ferris_fix}", applicability = "maybe-incorrect")]
28 pub first_span: Span,
29 pub ferris_fix: &'static str,
30}
31
32#[derive(Diagnostic)]
33#[diag(interface_emoji_identifier)]
34pub struct EmojiIdentifier {
35 #[primary_span]
36 pub spans: Vec<Span>,
37 pub ident: Symbol,
38}
39
40#[derive(Diagnostic)]
41#[diag(interface_mixed_bin_crate)]
42pub struct MixedBinCrate;
43
44#[derive(Diagnostic)]
45#[diag(interface_mixed_proc_macro_crate)]
46pub struct MixedProcMacroCrate;
47
48#[derive(Diagnostic)]
49#[diag(interface_error_writing_dependencies)]
50pub struct ErrorWritingDependencies<'a> {
51 pub path: &'a Path,
52 pub error: io::Error,
53}
54
55#[derive(Diagnostic)]
56#[diag(interface_input_file_would_be_overwritten)]
57pub struct InputFileWouldBeOverWritten<'a> {
58 pub path: &'a Path,
59}
60
61#[derive(Diagnostic)]
62#[diag(interface_generated_file_conflicts_with_directory)]
63pub struct GeneratedFileConflictsWithDirectory<'a> {
64 pub input_path: &'a Path,
65 pub dir_path: &'a Path,
66}
67
68#[derive(Diagnostic)]
69#[diag(interface_temps_dir_error)]
70pub struct TempsDirError;
71
72#[derive(Diagnostic)]
73#[diag(interface_out_dir_error)]
74pub struct OutDirError;
75
76#[derive(Diagnostic)]
77#[diag(interface_rustc_error_fatal)]
78pub struct RustcErrorFatal {
79 #[primary_span]
80 pub span: Span,
81}
82
83#[derive(Diagnostic)]
84#[diag(interface_rustc_error_unexpected_annotation)]
85pub struct RustcErrorUnexpectedAnnotation {
86 #[primary_span]
87 pub span: Span,
88}
89
90#[derive(Diagnostic)]
91#[diag(interface_failed_writing_file)]
92pub struct FailedWritingFile<'a> {
93 pub path: &'a Path,
94 pub error: io::Error,
95}
96
97#[derive(Diagnostic)]
98#[diag(interface_proc_macro_crate_panic_abort)]
99pub struct ProcMacroCratePanicAbort;
100
101#[derive(Diagnostic)]
102#[diag(interface_multiple_output_types_adaption)]
103pub struct MultipleOutputTypesAdaption;
104
105#[derive(Diagnostic)]
106#[diag(interface_ignoring_extra_filename)]
107pub struct IgnoringExtraFilename;
108
109#[derive(Diagnostic)]
110#[diag(interface_ignoring_out_dir)]
111pub struct IgnoringOutDir;
112
113#[derive(Diagnostic)]
114#[diag(interface_multiple_output_types_to_stdout)]
115pub struct MultipleOutputTypesToStdout;
116
117#[derive(Diagnostic)]
118#[diag(interface_abi_required_feature)]
119#[note]
120#[note(interface_abi_required_feature_issue)]
121pub(crate) struct AbiRequiredTargetFeature<'a> {
122 pub feature: &'a str,
123 pub enabled: &'a str,
124}
125
126#[derive(Diagnostic)]
127#[diag(interface_limit_invalid)]
128pub(crate) struct LimitInvalid<'a> {
129 #[primary_span]
130 pub span: Span,
131 #[label]
132 pub value_span: Span,
133 pub error_str: &'a str,
134}