2 use rustc_macros::Diagnostic;
3 use rustc_session::Limit;
4 use rustc_span::edition::Edition;
5 use rustc_span::symbol::{Ident, MacroRulesNormalizedIdent};
6 use rustc_span::{Span, Symbol};
10 #[diag(expand_expr_repeat_no_syntax_vars)]
11 pub(crate) struct NoSyntaxVarsExprRepeat {
17 #[diag(expand_must_repeat_once)]
18 pub(crate) struct MustRepeatOnce {
24 #[diag(expand_count_repetition_misplaced)]
25 pub(crate) struct CountRepetitionMisplaced {
31 #[diag(expand_meta_var_expr_unrecognized_var)]
32 pub(crate) struct MetaVarExprUnrecognizedVar {
35 pub key: MacroRulesNormalizedIdent,
39 #[diag(expand_var_still_repeating)]
40 pub(crate) struct VarStillRepeating {
43 pub ident: MacroRulesNormalizedIdent,
47 #[diag(expand_meta_var_dif_seq_matchers)]
48 pub(crate) struct MetaVarsDifSeqMatchers {
55 #[diag(expand_resolve_relative_path)]
56 pub(crate) struct ResolveRelativePath {
63 #[diag(expand_macro_const_stability)]
64 pub(crate) struct MacroConstStability {
73 #[diag(expand_macro_body_stability)]
74 pub(crate) struct MacroBodyStability {
83 #[diag(expand_attr_no_arguments)]
84 pub(crate) struct AttrNoArguments {
90 #[diag(expand_not_a_meta_item)]
91 pub(crate) struct NotAMetaItem {
97 #[diag(expand_only_one_word)]
98 pub(crate) struct OnlyOneWord {
103 #[derive(Diagnostic)]
104 #[diag(expand_cannot_be_name_of_macro)]
105 pub(crate) struct CannotBeNameOfMacro<'a> {
108 pub trait_ident: Ident,
109 pub macro_type: &'a str,
112 #[derive(Diagnostic)]
113 #[diag(expand_arg_not_attributes)]
114 pub(crate) struct ArgumentNotAttributes {
119 #[derive(Diagnostic)]
120 #[diag(expand_attributes_wrong_form)]
121 pub(crate) struct AttributesWrongForm {
126 #[derive(Diagnostic)]
127 #[diag(expand_attribute_meta_item)]
128 pub(crate) struct AttributeMetaItem {
133 #[derive(Diagnostic)]
134 #[diag(expand_attribute_single_word)]
135 pub(crate) struct AttributeSingleWord {
140 #[derive(Diagnostic)]
141 #[diag(expand_helper_attribute_name_invalid)]
142 pub(crate) struct HelperAttributeNameInvalid {
148 #[derive(Diagnostic)]
149 #[diag(expand_expected_comma_in_list)]
150 pub(crate) struct ExpectedCommaInList {
155 #[derive(Diagnostic)]
156 #[diag(expand_only_one_argument)]
157 pub(crate) struct OnlyOneArgument<'a> {
163 #[derive(Diagnostic)]
164 #[diag(expand_takes_no_arguments)]
165 pub(crate) struct TakesNoArguments<'a> {
171 #[derive(Diagnostic)]
172 #[diag(expand_feature_included_in_edition, code = "E0705")]
173 pub(crate) struct FeatureIncludedInEdition {
177 pub edition: Edition,
180 #[derive(Diagnostic)]
181 #[diag(expand_feature_removed, code = "E0557")]
182 pub(crate) struct FeatureRemoved<'a> {
187 pub reason: Option<FeatureRemovedReason<'a>>,
190 #[derive(Subdiagnostic)]
192 pub(crate) struct FeatureRemovedReason<'a> {
196 #[derive(Diagnostic)]
197 #[diag(expand_feature_not_allowed, code = "E0725")]
198 pub(crate) struct FeatureNotAllowed {
204 #[derive(Diagnostic)]
205 #[diag(expand_recursion_limit_reached)]
207 pub(crate) struct RecursionLimitReached<'a> {
211 pub suggested_limit: Limit,
212 pub crate_name: &'a str,
215 #[derive(Diagnostic)]
216 #[diag(expand_malformed_feature_attribute, code = "E0556")]
217 pub(crate) struct MalformedFeatureAttribute {
221 pub help: MalformedFeatureAttributeHelp,
224 #[derive(Subdiagnostic)]
225 pub(crate) enum MalformedFeatureAttributeHelp {
231 #[suggestion(expected, code = "{suggestion}", applicability = "maybe-incorrect")]
239 #[derive(Diagnostic)]
240 #[diag(expand_remove_expr_not_supported)]
241 pub(crate) struct RemoveExprNotSupported {
246 #[derive(Diagnostic)]
247 pub(crate) enum InvalidCfg {
248 #[diag(expand_invalid_cfg_no_parens)]
249 NotFollowedByParens {
252 expand_invalid_cfg_expected_syntax,
253 code = "cfg(/* predicate */)",
254 applicability = "has-placeholders"
258 #[diag(expand_invalid_cfg_no_predicate)]
262 expand_invalid_cfg_expected_syntax,
263 code = "cfg(/* predicate */)",
264 applicability = "has-placeholders"
268 #[diag(expand_invalid_cfg_multiple_predicates)]
273 #[diag(expand_invalid_cfg_predicate_literal)]
280 #[derive(Diagnostic)]
281 #[diag(expand_wrong_fragment_kind)]
282 pub(crate) struct WrongFragmentKind<'a> {
286 pub name: &'a ast::Path,
289 #[derive(Diagnostic)]
290 #[diag(expand_unsupported_key_value)]
291 pub(crate) struct UnsupportedKeyValue {
296 #[derive(Diagnostic)]
297 #[diag(expand_incomplete_parse)]
299 pub(crate) struct IncompleteParse<'a> {
302 pub token: Cow<'a, str>,
304 pub label_span: Span,
305 pub macro_path: &'a ast::Path,
306 pub kind_name: &'a str,
312 applicability = "maybe-incorrect"
314 pub add_semicolon: Option<Span>,
317 #[derive(Diagnostic)]
318 #[diag(expand_remove_node_not_supported)]
319 pub(crate) struct RemoveNodeNotSupported {
322 pub descr: &'static str,
325 #[derive(Diagnostic)]
326 #[diag(expand_module_circular)]
327 pub(crate) struct ModuleCircular {
333 #[derive(Diagnostic)]
334 #[diag(expand_module_in_block)]
335 pub(crate) struct ModuleInBlock {
339 pub name: Option<ModuleInBlockName>,
342 #[derive(Subdiagnostic)]
344 pub(crate) struct ModuleInBlockName {
350 #[derive(Diagnostic)]
351 #[diag(expand_module_file_not_found, code = "E0583")]
353 pub(crate) struct ModuleFileNotFound {
357 pub default_path: String,
358 pub secondary_path: String,
361 #[derive(Diagnostic)]
362 #[diag(expand_module_multiple_candidates, code = "E0761")]
364 pub(crate) struct ModuleMultipleCandidates {
368 pub default_path: String,
369 pub secondary_path: String,