1 use rustc_macros::{Diagnostic, Subdiagnostic}; 2 use rustc_span::{ 3 symbol::{Ident, Symbol}, 4 Span, 5 }; 6 7 use crate::{late::PatternSource, Res}; 8 9 #[derive(Diagnostic)] 10 #[diag(resolve_parent_module_reset_for_binding, code = "E0637")] 11 pub(crate) struct ParentModuleResetForBinding; 12 13 #[derive(Diagnostic)] 14 #[diag(resolve_ampersand_used_without_explicit_lifetime_name, code = "E0637")] 15 #[note] 16 pub(crate) struct AmpersandUsedWithoutExplicitLifetimeName(#[primary_span] pub(crate) Span); 17 18 #[derive(Diagnostic)] 19 #[diag(resolve_underscore_lifetime_name_cannot_be_used_here, code = "E0637")] 20 #[note] 21 pub(crate) struct UnderscoreLifetimeNameCannotBeUsedHere(#[primary_span] pub(crate) Span); 22 23 #[derive(Diagnostic)] 24 #[diag(resolve_crate_may_not_be_imported)] 25 pub(crate) struct CrateMayNotBeImported(#[primary_span] pub(crate) Span); 26 27 #[derive(Diagnostic)] 28 #[diag(resolve_crate_root_imports_must_be_named_explicitly)] 29 pub(crate) struct CrateRootNamesMustBeNamedExplicitly(#[primary_span] pub(crate) Span); 30 31 #[derive(Diagnostic)] 32 #[diag(resolve_crate_root_imports_must_be_named_explicitly)] 33 pub(crate) struct ResolutionError(#[primary_span] pub(crate) Span); 34 35 #[derive(Diagnostic)] 36 #[diag(resolve_name_is_already_used_as_generic_parameter, code = "E0403")] 37 pub(crate) struct NameAlreadyUsedInParameterList { 38 #[primary_span] 39 #[label] 40 pub(crate) span: Span, 41 #[label(resolve_first_use_of_name)] 42 pub(crate) first_use_span: Span, 43 pub(crate) name: Symbol, 44 } 45 46 #[derive(Diagnostic)] 47 #[diag(resolve_method_not_member_of_trait, code = "E0407")] 48 pub(crate) struct MethodNotMemberOfTrait { 49 #[primary_span] 50 #[label] 51 pub(crate) span: Span, 52 pub(crate) method: Ident, 53 pub(crate) trait_: String, 54 #[subdiagnostic] 55 pub(crate) sub: Option<AssociatedFnWithSimilarNameExists>, 56 } 57 58 #[derive(Subdiagnostic)] 59 #[suggestion( 60 resolve_associated_fn_with_similar_name_exists, 61 code = "{candidate}", 62 applicability = "maybe-incorrect" 63 )] 64 pub(crate) struct AssociatedFnWithSimilarNameExists { 65 #[primary_span] 66 pub(crate) span: Span, 67 pub(crate) candidate: Symbol, 68 } 69 70 #[derive(Diagnostic)] 71 #[diag(resolve_type_not_member_of_trait, code = "E0437")] 72 pub(crate) struct TypeNotMemberOfTrait { 73 #[primary_span] 74 #[label] 75 pub(crate) span: Span, 76 pub(crate) type_: Ident, 77 pub(crate) trait_: String, 78 #[subdiagnostic] 79 pub(crate) sub: Option<AssociatedTypeWithSimilarNameExists>, 80 } 81 82 #[derive(Subdiagnostic)] 83 #[suggestion( 84 resolve_associated_type_with_similar_name_exists, 85 code = "{candidate}", 86 applicability = "maybe-incorrect" 87 )] 88 pub(crate) struct AssociatedTypeWithSimilarNameExists { 89 #[primary_span] 90 pub(crate) span: Span, 91 pub(crate) candidate: Symbol, 92 } 93 94 #[derive(Diagnostic)] 95 #[diag(resolve_const_not_member_of_trait, code = "E0438")] 96 pub(crate) struct ConstNotMemberOfTrait { 97 #[primary_span] 98 #[label] 99 pub(crate) span: Span, 100 pub(crate) const_: Ident, 101 pub(crate) trait_: String, 102 #[subdiagnostic] 103 pub(crate) sub: Option<AssociatedConstWithSimilarNameExists>, 104 } 105 106 #[derive(Subdiagnostic)] 107 #[suggestion( 108 resolve_associated_const_with_similar_name_exists, 109 code = "{candidate}", 110 applicability = "maybe-incorrect" 111 )] 112 pub(crate) struct AssociatedConstWithSimilarNameExists { 113 #[primary_span] 114 pub(crate) span: Span, 115 pub(crate) candidate: Symbol, 116 } 117 118 #[derive(Diagnostic)] 119 #[diag(resolve_variable_bound_with_different_mode, code = "E0409")] 120 pub(crate) struct VariableBoundWithDifferentMode { 121 #[primary_span] 122 #[label] 123 pub(crate) span: Span, 124 #[label(resolve_first_binding_span)] 125 pub(crate) first_binding_span: Span, 126 pub(crate) variable_name: Symbol, 127 } 128 129 #[derive(Diagnostic)] 130 #[diag(resolve_ident_bound_more_than_once_in_parameter_list, code = "E0415")] 131 pub(crate) struct IdentifierBoundMoreThanOnceInParameterList { 132 #[primary_span] 133 #[label] 134 pub(crate) span: Span, 135 pub(crate) identifier: Symbol, 136 } 137 138 #[derive(Diagnostic)] 139 #[diag(resolve_ident_bound_more_than_once_in_same_pattern, code = "E0416")] 140 pub(crate) struct IdentifierBoundMoreThanOnceInSamePattern { 141 #[primary_span] 142 #[label] 143 pub(crate) span: Span, 144 pub(crate) identifier: Symbol, 145 } 146 147 #[derive(Diagnostic)] 148 #[diag(resolve_undeclared_label, code = "E0426")] 149 pub(crate) struct UndeclaredLabel { 150 #[primary_span] 151 #[label] 152 pub(crate) span: Span, 153 pub(crate) name: Symbol, 154 #[subdiagnostic] 155 pub(crate) sub_reachable: Option<LabelWithSimilarNameReachable>, 156 #[subdiagnostic] 157 pub(crate) sub_reachable_suggestion: Option<TryUsingSimilarlyNamedLabel>, 158 #[subdiagnostic] 159 pub(crate) sub_unreachable: Option<UnreachableLabelWithSimilarNameExists>, 160 } 161 162 #[derive(Subdiagnostic)] 163 #[label(resolve_label_with_similar_name_reachable)] 164 pub(crate) struct LabelWithSimilarNameReachable(#[primary_span] pub(crate) Span); 165 166 #[derive(Subdiagnostic)] 167 #[suggestion( 168 resolve_try_using_similarly_named_label, 169 code = "{ident_name}", 170 applicability = "maybe-incorrect" 171 )] 172 pub(crate) struct TryUsingSimilarlyNamedLabel { 173 #[primary_span] 174 pub(crate) span: Span, 175 pub(crate) ident_name: Symbol, 176 } 177 178 #[derive(Subdiagnostic)] 179 #[label(resolve_unreachable_label_with_similar_name_exists)] 180 pub(crate) struct UnreachableLabelWithSimilarNameExists { 181 #[primary_span] 182 pub(crate) ident_span: Span, 183 } 184 185 #[derive(Diagnostic)] 186 #[diag(resolve_self_import_can_only_appear_once_in_the_list, code = "E0430")] 187 pub(crate) struct SelfImportCanOnlyAppearOnceInTheList { 188 #[primary_span] 189 #[label] 190 pub(crate) span: Span, 191 } 192 193 #[derive(Diagnostic)] 194 #[diag(resolve_self_import_only_in_import_list_with_non_empty_prefix, code = "E0431")] 195 pub(crate) struct SelfImportOnlyInImportListWithNonEmptyPrefix { 196 #[primary_span] 197 #[label] 198 pub(crate) span: Span, 199 } 200 201 #[derive(Diagnostic)] 202 #[diag(resolve_cannot_capture_dynamic_environment_in_fn_item, code = "E0434")] 203 #[help] 204 pub(crate) struct CannotCaptureDynamicEnvironmentInFnItem { 205 #[primary_span] 206 pub(crate) span: Span, 207 } 208 209 #[derive(Diagnostic)] 210 #[diag(resolve_attempt_to_use_non_constant_value_in_constant, code = "E0435")] 211 pub(crate) struct AttemptToUseNonConstantValueInConstant<'a> { 212 #[primary_span] 213 pub(crate) span: Span, 214 #[subdiagnostic] 215 pub(crate) with: Option<AttemptToUseNonConstantValueInConstantWithSuggestion<'a>>, 216 #[subdiagnostic] 217 pub(crate) with_label: Option<AttemptToUseNonConstantValueInConstantLabelWithSuggestion>, 218 #[subdiagnostic] 219 pub(crate) without: Option<AttemptToUseNonConstantValueInConstantWithoutSuggestion<'a>>, 220 } 221 222 #[derive(Subdiagnostic)] 223 #[suggestion( 224 resolve_attempt_to_use_non_constant_value_in_constant_with_suggestion, 225 code = "{suggestion} {ident}", 226 applicability = "maybe-incorrect" 227 )] 228 pub(crate) struct AttemptToUseNonConstantValueInConstantWithSuggestion<'a> { 229 #[primary_span] 230 pub(crate) span: Span, 231 pub(crate) ident: Ident, 232 pub(crate) suggestion: &'a str, 233 pub(crate) current: &'a str, 234 } 235 236 #[derive(Subdiagnostic)] 237 #[label(resolve_attempt_to_use_non_constant_value_in_constant_label_with_suggestion)] 238 pub(crate) struct AttemptToUseNonConstantValueInConstantLabelWithSuggestion { 239 #[primary_span] 240 pub(crate) span: Span, 241 } 242 243 #[derive(Subdiagnostic)] 244 #[label(resolve_attempt_to_use_non_constant_value_in_constant_without_suggestion)] 245 pub(crate) struct AttemptToUseNonConstantValueInConstantWithoutSuggestion<'a> { 246 #[primary_span] 247 pub(crate) ident_span: Span, 248 pub(crate) suggestion: &'a str, 249 } 250 251 #[derive(Diagnostic)] 252 #[diag(resolve_self_imports_only_allowed_within, code = "E0429")] 253 pub(crate) struct SelfImportsOnlyAllowedWithin { 254 #[primary_span] 255 pub(crate) span: Span, 256 #[subdiagnostic] 257 pub(crate) suggestion: Option<SelfImportsOnlyAllowedWithinSuggestion>, 258 #[subdiagnostic] 259 pub(crate) mpart_suggestion: Option<SelfImportsOnlyAllowedWithinMultipartSuggestion>, 260 } 261 262 #[derive(Subdiagnostic)] 263 #[suggestion( 264 resolve_self_imports_only_allowed_within_suggestion, 265 code = "", 266 applicability = "machine-applicable" 267 )] 268 pub(crate) struct SelfImportsOnlyAllowedWithinSuggestion { 269 #[primary_span] 270 pub(crate) span: Span, 271 } 272 273 #[derive(Subdiagnostic)] 274 #[multipart_suggestion( 275 resolve_self_imports_only_allowed_within_multipart_suggestion, 276 applicability = "machine-applicable" 277 )] 278 pub(crate) struct SelfImportsOnlyAllowedWithinMultipartSuggestion { 279 #[suggestion_part(code = "{{")] 280 pub(crate) multipart_start: Span, 281 #[suggestion_part(code = "}}")] 282 pub(crate) multipart_end: Span, 283 } 284 285 #[derive(Diagnostic)] 286 #[diag(resolve_binding_shadows_something_unacceptable, code = "E0530")] 287 pub(crate) struct BindingShadowsSomethingUnacceptable<'a> { 288 #[primary_span] 289 #[label] 290 pub(crate) span: Span, 291 pub(crate) shadowing_binding: PatternSource, 292 pub(crate) shadowed_binding: Res, 293 pub(crate) article: &'a str, 294 #[subdiagnostic] 295 pub(crate) sub_suggestion: Option<BindingShadowsSomethingUnacceptableSuggestion>, 296 #[label(resolve_label_shadowed_binding)] 297 pub(crate) shadowed_binding_span: Span, 298 pub(crate) participle: &'a str, 299 pub(crate) name: Symbol, 300 } 301 302 #[derive(Subdiagnostic)] 303 #[suggestion( 304 resolve_binding_shadows_something_unacceptable_suggestion, 305 code = "{name}(..)", 306 applicability = "unspecified" 307 )] 308 pub(crate) struct BindingShadowsSomethingUnacceptableSuggestion { 309 #[primary_span] 310 pub(crate) span: Span, 311 pub(crate) name: Symbol, 312 } 313 314 #[derive(Diagnostic)] 315 #[diag(resolve_forward_declared_generic_param, code = "E0128")] 316 pub(crate) struct ForwardDeclaredGenericParam { 317 #[primary_span] 318 #[label] 319 pub(crate) span: Span, 320 } 321 322 #[derive(Diagnostic)] 323 #[diag(resolve_param_in_ty_of_const_param, code = "E0770")] 324 pub(crate) struct ParamInTyOfConstParam { 325 #[primary_span] 326 #[label] 327 pub(crate) span: Span, 328 pub(crate) name: Symbol, 329 #[subdiagnostic] 330 pub(crate) param_kind: Option<ParamKindInTyOfConstParam>, 331 } 332 333 #[derive(Debug)] 334 #[derive(Subdiagnostic)] 335 pub(crate) enum ParamKindInTyOfConstParam { 336 #[note(resolve_type_param_in_ty_of_const_param)] 337 Type, 338 #[note(resolve_const_param_in_ty_of_const_param)] 339 Const, 340 #[note(resolve_lifetime_param_in_ty_of_const_param)] 341 Lifetime, 342 } 343 344 #[derive(Diagnostic)] 345 #[diag(resolve_self_in_generic_param_default, code = "E0735")] 346 pub(crate) struct SelfInGenericParamDefault { 347 #[primary_span] 348 #[label] 349 pub(crate) span: Span, 350 } 351 352 #[derive(Diagnostic)] 353 #[diag(resolve_param_in_non_trivial_anon_const)] 354 pub(crate) struct ParamInNonTrivialAnonConst { 355 #[primary_span] 356 #[label] 357 pub(crate) span: Span, 358 pub(crate) name: Symbol, 359 #[subdiagnostic] 360 pub(crate) param_kind: ParamKindInNonTrivialAnonConst, 361 #[subdiagnostic] 362 pub(crate) help: Option<ParamInNonTrivialAnonConstHelp>, 363 } 364 365 #[derive(Subdiagnostic)] 366 #[help(resolve_param_in_non_trivial_anon_const_help)] 367 pub(crate) struct ParamInNonTrivialAnonConstHelp; 368 369 #[derive(Debug)] 370 #[derive(Subdiagnostic)] 371 pub(crate) enum ParamKindInNonTrivialAnonConst { 372 #[note(resolve_type_param_in_non_trivial_anon_const)] 373 Type, 374 #[help(resolve_const_param_in_non_trivial_anon_const)] 375 Const { name: Symbol }, 376 #[note(resolve_lifetime_param_in_non_trivial_anon_const)] 377 Lifetime, 378 } 379 380 #[derive(Diagnostic)] 381 #[diag(resolve_unreachable_label, code = "E0767")] 382 #[note] 383 pub(crate) struct UnreachableLabel { 384 #[primary_span] 385 #[label] 386 pub(crate) span: Span, 387 pub(crate) name: Symbol, 388 #[label(resolve_label_definition_span)] 389 pub(crate) definition_span: Span, 390 #[subdiagnostic] 391 pub(crate) sub_suggestion: Option<UnreachableLabelSubSuggestion>, 392 #[subdiagnostic] 393 pub(crate) sub_suggestion_label: Option<UnreachableLabelSubLabel>, 394 #[subdiagnostic] 395 pub(crate) sub_unreachable_label: Option<UnreachableLabelSubLabelUnreachable>, 396 } 397 398 #[derive(Subdiagnostic)] 399 #[suggestion( 400 resolve_unreachable_label_suggestion_use_similarly_named, 401 code = "{ident_name}", 402 applicability = "maybe-incorrect" 403 )] 404 pub(crate) struct UnreachableLabelSubSuggestion { 405 #[primary_span] 406 pub(crate) span: Span, 407 pub(crate) ident_name: Symbol, 408 } 409 410 #[derive(Subdiagnostic)] 411 #[label(resolve_unreachable_label_similar_name_reachable)] 412 pub(crate) struct UnreachableLabelSubLabel { 413 #[primary_span] 414 pub(crate) ident_span: Span, 415 } 416 417 #[derive(Subdiagnostic)] 418 #[label(resolve_unreachable_label_similar_name_unreachable)] 419 pub(crate) struct UnreachableLabelSubLabelUnreachable { 420 #[primary_span] 421 pub(crate) ident_span: Span, 422 } 423 424 #[derive(Diagnostic)] 425 #[diag(resolve_trait_impl_mismatch, code = "{code}")] 426 pub(crate) struct TraitImplMismatch { 427 #[primary_span] 428 #[label] 429 pub(crate) span: Span, 430 pub(crate) name: Symbol, 431 pub(crate) kind: String, 432 #[label(resolve_label_trait_item)] 433 pub(crate) trait_item_span: Span, 434 pub(crate) trait_path: String, 435 pub(crate) code: String, 436 } 437 438 #[derive(Diagnostic)] 439 #[diag(resolve_invalid_asm_sym)] 440 #[help] 441 pub(crate) struct InvalidAsmSym { 442 #[primary_span] 443 #[label] 444 pub(crate) span: Span, 445 } 446 447 #[derive(Diagnostic)] 448 #[diag(resolve_lowercase_self)] 449 pub(crate) struct LowercaseSelf { 450 #[primary_span] 451 #[suggestion(code = "Self", applicability = "maybe-incorrect", style = "short")] 452 pub(crate) span: Span, 453 } 454 455 #[derive(Diagnostic)] 456 #[diag(resolve_trait_impl_duplicate, code = "E0201")] 457 pub(crate) struct TraitImplDuplicate { 458 #[primary_span] 459 #[label] 460 pub(crate) span: Span, 461 #[label(resolve_old_span_label)] 462 pub(crate) old_span: Span, 463 #[label(resolve_trait_item_span)] 464 pub(crate) trait_item_span: Span, 465 pub(crate) name: Symbol, 466 } 467 468 #[derive(Diagnostic)] 469 #[diag(resolve_relative_2018)] 470 pub(crate) struct Relative2018 { 471 #[primary_span] 472 pub(crate) span: Span, 473 #[suggestion(code = "crate::{path_str}", applicability = "maybe-incorrect")] 474 pub(crate) path_span: Span, 475 pub(crate) path_str: String, 476 } 477 478 #[derive(Diagnostic)] 479 #[diag(resolve_ancestor_only, code = "E0742")] 480 pub(crate) struct AncestorOnly(#[primary_span] pub(crate) Span); 481 482 #[derive(Diagnostic)] 483 #[diag(resolve_expected_found, code = "E0577")] 484 pub(crate) struct ExpectedFound { 485 #[primary_span] 486 #[label] 487 pub(crate) span: Span, 488 pub(crate) res: Res, 489 pub(crate) path_str: String, 490 } 491 492 #[derive(Diagnostic)] 493 #[diag(resolve_indeterminate, code = "E0578")] 494 pub(crate) struct Indeterminate(#[primary_span] pub(crate) Span); 495 496 #[derive(Diagnostic)] 497 #[diag(resolve_tool_module_imported)] 498 pub(crate) struct ToolModuleImported { 499 #[primary_span] 500 pub(crate) span: Span, 501 #[note] 502 pub(crate) import: Span, 503 } 504 505 #[derive(Diagnostic)] 506 #[diag(resolve_module_only)] 507 pub(crate) struct ModuleOnly(#[primary_span] pub(crate) Span); 508 509 #[derive(Diagnostic, Default)] 510 #[diag(resolve_macro_expected_found)] 511 pub(crate) struct MacroExpectedFound<'a> { 512 #[primary_span] 513 pub(crate) span: Span, 514 pub(crate) found: &'a str, 515 pub(crate) expected: &'a str, 516 pub(crate) macro_path: &'a str, 517 #[subdiagnostic] 518 pub(crate) remove_surrounding_derive: Option<RemoveSurroundingDerive>, 519 #[subdiagnostic] 520 pub(crate) add_as_non_derive: Option<AddAsNonDerive<'a>>, 521 } 522 523 #[derive(Subdiagnostic)] 524 #[help(resolve_remove_surrounding_derive)] 525 pub(crate) struct RemoveSurroundingDerive { 526 #[primary_span] 527 pub(crate) span: Span, 528 } 529 530 #[derive(Subdiagnostic)] 531 #[help(resolve_add_as_non_derive)] 532 pub(crate) struct AddAsNonDerive<'a> { 533 pub(crate) macro_path: &'a str, 534 } 535 536 #[derive(Diagnostic)] 537 #[diag(resolve_proc_macro_same_crate)] 538 pub(crate) struct ProcMacroSameCrate { 539 #[primary_span] 540 pub(crate) span: Span, 541 #[help] 542 pub(crate) is_test: bool, 543 } 544 545 #[derive(Diagnostic)] 546 #[diag(resolve_imported_crate)] 547 pub(crate) struct CrateImported { 548 #[primary_span] 549 pub(crate) span: Span, 550 } 551 552 #[derive(Diagnostic)] 553 #[diag(resolve_macro_use_extern_crate_self)] 554 pub(crate) struct MacroUseExternCrateSelf { 555 #[primary_span] 556 pub(crate) span: Span, 557 } 558 559 #[derive(Diagnostic)] 560 #[diag(resolve_accessible_unsure)] 561 #[note] 562 pub(crate) struct CfgAccessibleUnsure { 563 #[primary_span] 564 pub(crate) span: Span, 565 } 566 567 #[derive(Debug)] 568 #[derive(Diagnostic)] 569 #[diag(resolve_param_in_enum_discriminant)] 570 pub(crate) struct ParamInEnumDiscriminant { 571 #[primary_span] 572 #[label] 573 pub(crate) span: Span, 574 pub(crate) name: Symbol, 575 #[subdiagnostic] 576 pub(crate) param_kind: ParamKindInEnumDiscriminant, 577 } 578 579 #[derive(Debug)] 580 #[derive(Subdiagnostic)] 581 pub(crate) enum ParamKindInEnumDiscriminant { 582 #[note(resolve_type_param_in_enum_discriminant)] 583 Type, 584 #[note(resolve_const_param_in_enum_discriminant)] 585 Const, 586 #[note(resolve_lifetime_param_in_enum_discriminant)] 587 Lifetime, 588 } 589 590 #[derive(Subdiagnostic)] 591 #[label(resolve_change_import_binding)] 592 pub(crate) struct ChangeImportBinding { 593 #[primary_span] 594 pub(crate) span: Span, 595 } 596 597 #[derive(Subdiagnostic)] 598 #[suggestion( 599 resolve_change_import_binding, 600 code = "{suggestion}", 601 applicability = "maybe-incorrect" 602 )] 603 pub(crate) struct ChangeImportBindingSuggestion { 604 #[primary_span] 605 pub(crate) span: Span, 606 pub(crate) suggestion: String, 607 } 608 609 #[derive(Diagnostic)] 610 #[diag(resolve_imports_cannot_refer_to)] 611 pub(crate) struct ImportsCannotReferTo<'a> { 612 #[primary_span] 613 pub(crate) span: Span, 614 pub(crate) what: &'a str, 615 } 616 617 #[derive(Diagnostic)] 618 #[diag(resolve_cannot_find_ident_in_this_scope)] 619 pub(crate) struct CannotFindIdentInThisScope<'a> { 620 #[primary_span] 621 pub(crate) span: Span, 622 pub(crate) expected: &'a str, 623 pub(crate) ident: Ident, 624 } 625 626 #[derive(Subdiagnostic)] 627 #[note(resolve_explicit_unsafe_traits)] 628 pub(crate) struct ExplicitUnsafeTraits { 629 #[primary_span] 630 pub(crate) span: Span, 631 pub(crate) ident: Ident, 632 } 633 634 #[derive(Subdiagnostic)] 635 #[help(resolve_added_macro_use)] 636 pub(crate) struct AddedMacroUse; 637 638 #[derive(Subdiagnostic)] 639 #[suggestion( 640 resolve_consider_adding_a_derive, 641 code = "{suggestion}", 642 applicability = "maybe-incorrect" 643 )] 644 pub(crate) struct ConsiderAddingADerive { 645 #[primary_span] 646 pub(crate) span: Span, 647 pub(crate) suggestion: String, 648 } 649 650 #[derive(Diagnostic)] 651 #[diag(resolve_cannot_determine_import_resolution)] 652 pub(crate) struct CannotDetermineImportResolution { 653 #[primary_span] 654 pub(crate) span: Span, 655 } 656 657 #[derive(Diagnostic)] 658 #[diag(resolve_cannot_be_reexported_private, code = "E0364")] 659 pub(crate) struct CannotBeReexportedPrivate { 660 #[primary_span] 661 pub(crate) span: Span, 662 pub(crate) ident: Ident, 663 } 664 665 #[derive(Diagnostic)] 666 #[diag(resolve_cannot_be_reexported_crate_public, code = "E0364")] 667 pub(crate) struct CannotBeReexportedCratePublic { 668 #[primary_span] 669 pub(crate) span: Span, 670 pub(crate) ident: Ident, 671 } 672 673 #[derive(Diagnostic)] 674 #[diag(resolve_cannot_be_reexported_private, code = "E0365")] 675 #[note(resolve_consider_declaring_with_pub)] 676 pub(crate) struct CannotBeReexportedPrivateNS { 677 #[primary_span] 678 #[label(resolve_reexport_of_private)] 679 pub(crate) span: Span, 680 pub(crate) ident: Ident, 681 } 682 683 #[derive(Diagnostic)] 684 #[diag(resolve_cannot_be_reexported_crate_public, code = "E0365")] 685 #[note(resolve_consider_declaring_with_pub)] 686 pub(crate) struct CannotBeReexportedCratePublicNS { 687 #[primary_span] 688 #[label(resolve_reexport_of_crate_public)] 689 pub(crate) span: Span, 690 pub(crate) ident: Ident, 691 } 692 693 #[derive(Subdiagnostic)] 694 #[help(resolve_consider_adding_macro_export)] 695 pub(crate) struct ConsiderAddingMacroExport { 696 #[primary_span] 697 pub(crate) span: Span, 698 } 699 700 #[derive(Subdiagnostic)] 701 #[note(resolve_consider_marking_as_pub)] 702 pub(crate) struct ConsiderMarkingAsPub { 703 #[primary_span] 704 pub(crate) span: Span, 705 pub(crate) ident: Ident, 706 } 707 708 #[derive(Diagnostic)] 709 #[diag(resolve_cannot_glob_import_possible_crates)] 710 pub(crate) struct CannotGlobImportAllCrates { 711 #[primary_span] 712 pub(crate) span: Span, 713 } 714 715 #[derive(Diagnostic)] 716 #[diag(resolve_items_in_traits_are_not_importable)] 717 pub(crate) struct ItemsInTraitsAreNotImportable { 718 #[primary_span] 719 pub(crate) span: Span, 720 } 721 722 #[derive(Diagnostic)] 723 #[diag(resolve_is_not_directly_importable, code = "E0253")] 724 pub(crate) struct IsNotDirectlyImportable { 725 #[primary_span] 726 #[label] 727 pub(crate) span: Span, 728 pub(crate) target: Ident, 729 } 730