]> git.lizzy.rs Git - rust.git/blob - src/libsyntax/diagnostics/macros.rs
Auto merge of #61817 - eddyb:begone-gcx-attempt-2, r=oli-obk
[rust.git] / src / libsyntax / diagnostics / macros.rs
1 #[macro_export]
2 macro_rules! register_diagnostic {
3     ($code:tt, $description:tt) => (__register_diagnostic! { $code, $description });
4     ($code:tt) => (__register_diagnostic! { $code })
5 }
6
7 #[macro_export]
8 macro_rules! span_fatal {
9     ($session:expr, $span:expr, $code:ident, $($message:tt)*) => ({
10         __diagnostic_used!($code);
11         $session.span_fatal_with_code(
12             $span,
13             &format!($($message)*),
14             $crate::errors::DiagnosticId::Error(stringify!($code).to_owned()),
15         )
16     })
17 }
18
19 #[macro_export]
20 macro_rules! span_err {
21     ($session:expr, $span:expr, $code:ident, $($message:tt)*) => ({
22         __diagnostic_used!($code);
23         $session.span_err_with_code(
24             $span,
25             &format!($($message)*),
26             $crate::errors::DiagnosticId::Error(stringify!($code).to_owned()),
27         )
28     })
29 }
30
31 #[macro_export]
32 macro_rules! span_warn {
33     ($session:expr, $span:expr, $code:ident, $($message:tt)*) => ({
34         __diagnostic_used!($code);
35         $session.span_warn_with_code(
36             $span,
37             &format!($($message)*),
38             $crate::errors::DiagnosticId::Error(stringify!($code).to_owned()),
39         )
40     })
41 }
42
43 #[macro_export]
44 macro_rules! struct_err {
45     ($session:expr, $code:ident, $($message:tt)*) => ({
46         __diagnostic_used!($code);
47         $session.struct_err_with_code(
48             &format!($($message)*),
49             $crate::errors::DiagnosticId::Error(stringify!($code).to_owned()),
50         )
51     })
52 }
53
54 #[macro_export]
55 macro_rules! span_err_or_warn {
56     ($is_warning:expr, $session:expr, $span:expr, $code:ident, $($message:tt)*) => ({
57         __diagnostic_used!($code);
58         if $is_warning {
59             $session.span_warn_with_code(
60                 $span,
61                 &format!($($message)*),
62                 $crate::errors::DiagnosticId::Error(stringify!($code).to_owned()),
63             )
64         } else {
65             $session.span_err_with_code(
66                 $span,
67                 &format!($($message)*),
68                 $crate::errors::DiagnosticId::Error(stringify!($code).to_owned()),
69             )
70         }
71     })
72 }
73
74 #[macro_export]
75 macro_rules! struct_span_fatal {
76     ($session:expr, $span:expr, $code:ident, $($message:tt)*) => ({
77         __diagnostic_used!($code);
78         $session.struct_span_fatal_with_code(
79             $span,
80             &format!($($message)*),
81             $crate::errors::DiagnosticId::Error(stringify!($code).to_owned()),
82         )
83     })
84 }
85
86 #[macro_export]
87 macro_rules! struct_span_err {
88     ($session:expr, $span:expr, $code:ident, $($message:tt)*) => ({
89         __diagnostic_used!($code);
90         $session.struct_span_err_with_code(
91             $span,
92             &format!($($message)*),
93             $crate::errors::DiagnosticId::Error(stringify!($code).to_owned()),
94         )
95     })
96 }
97
98 #[macro_export]
99 macro_rules! stringify_error_code {
100     ($code:ident) => ({
101         __diagnostic_used!($code);
102         $crate::errors::DiagnosticId::Error(stringify!($code).to_owned())
103     })
104 }
105
106 #[macro_export]
107 macro_rules! type_error_struct {
108     ($session:expr, $span:expr, $typ:expr, $code:ident, $($message:tt)*) => ({
109         if $typ.references_error() {
110             $session.diagnostic().struct_dummy()
111         } else {
112             struct_span_err!($session, $span, $code, $($message)*)
113         }
114     })
115 }
116
117 #[macro_export]
118 macro_rules! struct_span_warn {
119     ($session:expr, $span:expr, $code:ident, $($message:tt)*) => ({
120         __diagnostic_used!($code);
121         $session.struct_span_warn_with_code(
122             $span,
123             &format!($($message)*),
124             $crate::errors::DiagnosticId::Error(stringify!($code).to_owned()),
125         )
126     })
127 }
128
129 #[macro_export]
130 macro_rules! struct_span_err_or_warn {
131     ($is_warning:expr, $session:expr, $span:expr, $code:ident, $($message:tt)*) => ({
132         __diagnostic_used!($code);
133         if $is_warning {
134             $session.struct_span_warn_with_code(
135                 $span,
136                 &format!($($message)*),
137                 $crate::errors::DiagnosticId::Error(stringify!($code).to_owned()),
138             )
139         } else {
140             $session.struct_span_err_with_code(
141                 $span,
142                 &format!($($message)*),
143                 $crate::errors::DiagnosticId::Error(stringify!($code).to_owned()),
144             )
145         }
146     })
147 }
148
149 #[macro_export]
150 macro_rules! span_note {
151     ($err:expr, $span:expr, $($message:tt)*) => ({
152         ($err).span_note($span, &format!($($message)*));
153     })
154 }
155
156 #[macro_export]
157 macro_rules! span_help {
158     ($err:expr, $span:expr, $($message:tt)*) => ({
159         ($err).span_help($span, &format!($($message)*));
160     })
161 }
162
163 #[macro_export]
164 macro_rules! help {
165     ($err:expr, $($message:tt)*) => ({
166         ($err).help(&format!($($message)*));
167     })
168 }
169
170 #[macro_export]
171 macro_rules! register_diagnostics {
172     ($($code:tt),*) => (
173         $(register_diagnostic! { $code })*
174     );
175     ($($code:tt),*,) => (
176         $(register_diagnostic! { $code })*
177     )
178 }
179
180 #[macro_export]
181 macro_rules! register_long_diagnostics {
182     ($($code:tt: $description:tt),*) => (
183         $(register_diagnostic! { $code, $description })*
184     );
185     ($($code:tt: $description:tt),*,) => (
186         $(register_diagnostic! { $code, $description })*
187     )
188 }