Stop using String
for error codes.
Error codes are integers, but `String` is used everywhere to represent them. Gross! This commit introduces `ErrCode`, an integral newtype for error codes, replacing `String`. It also introduces a constant for every error code, e.g. `E0123`, and removes the `error_code!` macro. The constants are imported wherever used with `use rustc_errors::codes::*`. With the old code, we have three different ways to specify an error code at a use point: ``` error_code!(E0123) // macro call struct_span_code_err!(dcx, span, E0123, "msg"); // bare ident arg to macro call \#[diag(name, code = "E0123")] // string struct Diag; ``` With the new code, they all use the `E0123` constant. ``` E0123 // constant struct_span_code_err!(dcx, span, E0123, "msg"); // constant \#[diag(name, code = E0123)] // constant struct Diag; ``` The commit also changes the structure of the error code definitions: - `rustc_error_codes` now just defines a higher-order macro listing the used error codes and nothing else. - Because that's now the only thing in the `rustc_error_codes` crate, I moved it into the `lib.rs` file and removed the `error_codes.rs` file. - `rustc_errors` uses that macro to define everything, e.g. the error code constants and the `DIAGNOSTIC_TABLES`. This is in its new `codes.rs` file.
This commit is contained in:
parent
0321de2778
commit
5d9dfbd08f
110 changed files with 1624 additions and 1572 deletions
|
@ -19,7 +19,7 @@ use rustc_ast::{self as ast, AssocItem, AssocItemKind, MetaItemKind, StmtKind};
|
|||
use rustc_ast::{Block, ForeignItem, ForeignItemKind, Impl, Item, ItemKind, NodeId};
|
||||
use rustc_attr as attr;
|
||||
use rustc_data_structures::sync::Lrc;
|
||||
use rustc_errors::{struct_span_code_err, Applicability};
|
||||
use rustc_errors::{codes::*, struct_span_code_err, Applicability};
|
||||
use rustc_expand::expand::AstFragment;
|
||||
use rustc_hir::def::{self, *};
|
||||
use rustc_hir::def_id::{DefId, LocalDefId, CRATE_DEF_ID};
|
||||
|
|
|
@ -6,8 +6,8 @@ use rustc_ast::{MetaItemKind, NestedMetaItem};
|
|||
use rustc_ast_pretty::pprust;
|
||||
use rustc_data_structures::fx::FxHashSet;
|
||||
use rustc_errors::{
|
||||
pluralize, report_ambiguity_error, struct_span_code_err, Applicability, DiagCtxt, Diagnostic,
|
||||
DiagnosticBuilder, ErrorGuaranteed, MultiSpan, SuggestionStyle,
|
||||
codes::*, pluralize, report_ambiguity_error, struct_span_code_err, Applicability, DiagCtxt,
|
||||
Diagnostic, DiagnosticBuilder, ErrorGuaranteed, MultiSpan, SuggestionStyle,
|
||||
};
|
||||
use rustc_feature::BUILTIN_ATTRIBUTES;
|
||||
use rustc_hir::def::Namespace::{self, *};
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
use rustc_errors::codes::*;
|
||||
use rustc_macros::{Diagnostic, Subdiagnostic};
|
||||
use rustc_span::{
|
||||
symbol::{Ident, Symbol},
|
||||
|
@ -7,16 +8,16 @@ use rustc_span::{
|
|||
use crate::{late::PatternSource, Res};
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_parent_module_reset_for_binding, code = "E0637")]
|
||||
#[diag(resolve_parent_module_reset_for_binding, code = E0637)]
|
||||
pub(crate) struct ParentModuleResetForBinding;
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_ampersand_used_without_explicit_lifetime_name, code = "E0637")]
|
||||
#[diag(resolve_ampersand_used_without_explicit_lifetime_name, code = E0637)]
|
||||
#[note]
|
||||
pub(crate) struct AmpersandUsedWithoutExplicitLifetimeName(#[primary_span] pub(crate) Span);
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_underscore_lifetime_name_cannot_be_used_here, code = "E0637")]
|
||||
#[diag(resolve_underscore_lifetime_name_cannot_be_used_here, code = E0637)]
|
||||
#[note]
|
||||
pub(crate) struct UnderscoreLifetimeNameCannotBeUsedHere(#[primary_span] pub(crate) Span);
|
||||
|
||||
|
@ -33,7 +34,7 @@ pub(crate) struct CrateRootNamesMustBeNamedExplicitly(#[primary_span] pub(crate)
|
|||
pub(crate) struct ResolutionError(#[primary_span] pub(crate) Span);
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_generic_params_from_outer_item, code = "E0401")]
|
||||
#[diag(resolve_generic_params_from_outer_item, code = E0401)]
|
||||
pub(crate) struct GenericParamsFromOuterItem {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
|
@ -67,7 +68,7 @@ pub(crate) struct GenericParamsFromOuterItemSugg {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_name_is_already_used_as_generic_parameter, code = "E0403")]
|
||||
#[diag(resolve_name_is_already_used_as_generic_parameter, code = E0403)]
|
||||
pub(crate) struct NameAlreadyUsedInParameterList {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
|
@ -78,7 +79,7 @@ pub(crate) struct NameAlreadyUsedInParameterList {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_method_not_member_of_trait, code = "E0407")]
|
||||
#[diag(resolve_method_not_member_of_trait, code = E0407)]
|
||||
pub(crate) struct MethodNotMemberOfTrait {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
|
@ -102,7 +103,7 @@ pub(crate) struct AssociatedFnWithSimilarNameExists {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_type_not_member_of_trait, code = "E0437")]
|
||||
#[diag(resolve_type_not_member_of_trait, code = E0437)]
|
||||
pub(crate) struct TypeNotMemberOfTrait {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
|
@ -126,7 +127,7 @@ pub(crate) struct AssociatedTypeWithSimilarNameExists {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_const_not_member_of_trait, code = "E0438")]
|
||||
#[diag(resolve_const_not_member_of_trait, code = E0438)]
|
||||
pub(crate) struct ConstNotMemberOfTrait {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
|
@ -150,7 +151,7 @@ pub(crate) struct AssociatedConstWithSimilarNameExists {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_variable_bound_with_different_mode, code = "E0409")]
|
||||
#[diag(resolve_variable_bound_with_different_mode, code = E0409)]
|
||||
pub(crate) struct VariableBoundWithDifferentMode {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
|
@ -161,7 +162,7 @@ pub(crate) struct VariableBoundWithDifferentMode {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_ident_bound_more_than_once_in_parameter_list, code = "E0415")]
|
||||
#[diag(resolve_ident_bound_more_than_once_in_parameter_list, code = E0415)]
|
||||
pub(crate) struct IdentifierBoundMoreThanOnceInParameterList {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
|
@ -170,7 +171,7 @@ pub(crate) struct IdentifierBoundMoreThanOnceInParameterList {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_ident_bound_more_than_once_in_same_pattern, code = "E0416")]
|
||||
#[diag(resolve_ident_bound_more_than_once_in_same_pattern, code = E0416)]
|
||||
pub(crate) struct IdentifierBoundMoreThanOnceInSamePattern {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
|
@ -179,7 +180,7 @@ pub(crate) struct IdentifierBoundMoreThanOnceInSamePattern {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_undeclared_label, code = "E0426")]
|
||||
#[diag(resolve_undeclared_label, code = E0426)]
|
||||
pub(crate) struct UndeclaredLabel {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
|
@ -217,7 +218,7 @@ pub(crate) struct UnreachableLabelWithSimilarNameExists {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_self_import_can_only_appear_once_in_the_list, code = "E0430")]
|
||||
#[diag(resolve_self_import_can_only_appear_once_in_the_list, code = E0430)]
|
||||
pub(crate) struct SelfImportCanOnlyAppearOnceInTheList {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
|
@ -225,7 +226,7 @@ pub(crate) struct SelfImportCanOnlyAppearOnceInTheList {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_self_import_only_in_import_list_with_non_empty_prefix, code = "E0431")]
|
||||
#[diag(resolve_self_import_only_in_import_list_with_non_empty_prefix, code = E0431)]
|
||||
pub(crate) struct SelfImportOnlyInImportListWithNonEmptyPrefix {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
|
@ -233,7 +234,7 @@ pub(crate) struct SelfImportOnlyInImportListWithNonEmptyPrefix {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_cannot_capture_dynamic_environment_in_fn_item, code = "E0434")]
|
||||
#[diag(resolve_cannot_capture_dynamic_environment_in_fn_item, code = E0434)]
|
||||
#[help]
|
||||
pub(crate) struct CannotCaptureDynamicEnvironmentInFnItem {
|
||||
#[primary_span]
|
||||
|
@ -241,7 +242,7 @@ pub(crate) struct CannotCaptureDynamicEnvironmentInFnItem {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_attempt_to_use_non_constant_value_in_constant, code = "E0435")]
|
||||
#[diag(resolve_attempt_to_use_non_constant_value_in_constant, code = E0435)]
|
||||
pub(crate) struct AttemptToUseNonConstantValueInConstant<'a> {
|
||||
#[primary_span]
|
||||
pub(crate) span: Span,
|
||||
|
@ -283,7 +284,7 @@ pub(crate) struct AttemptToUseNonConstantValueInConstantWithoutSuggestion<'a> {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_self_imports_only_allowed_within, code = "E0429")]
|
||||
#[diag(resolve_self_imports_only_allowed_within, code = E0429)]
|
||||
pub(crate) struct SelfImportsOnlyAllowedWithin {
|
||||
#[primary_span]
|
||||
pub(crate) span: Span,
|
||||
|
@ -317,7 +318,7 @@ pub(crate) struct SelfImportsOnlyAllowedWithinMultipartSuggestion {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_binding_shadows_something_unacceptable, code = "E0530")]
|
||||
#[diag(resolve_binding_shadows_something_unacceptable, code = E0530)]
|
||||
pub(crate) struct BindingShadowsSomethingUnacceptable<'a> {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
|
@ -346,7 +347,7 @@ pub(crate) struct BindingShadowsSomethingUnacceptableSuggestion {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_forward_declared_generic_param, code = "E0128")]
|
||||
#[diag(resolve_forward_declared_generic_param, code = E0128)]
|
||||
pub(crate) struct ForwardDeclaredGenericParam {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
|
@ -354,7 +355,7 @@ pub(crate) struct ForwardDeclaredGenericParam {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_param_in_ty_of_const_param, code = "E0770")]
|
||||
#[diag(resolve_param_in_ty_of_const_param, code = E0770)]
|
||||
pub(crate) struct ParamInTyOfConstParam {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
|
@ -376,7 +377,7 @@ pub(crate) enum ParamKindInTyOfConstParam {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_self_in_generic_param_default, code = "E0735")]
|
||||
#[diag(resolve_self_in_generic_param_default, code = E0735)]
|
||||
pub(crate) struct SelfInGenericParamDefault {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
|
@ -412,7 +413,7 @@ pub(crate) enum ParamKindInNonTrivialAnonConst {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_unreachable_label, code = "E0767")]
|
||||
#[diag(resolve_unreachable_label, code = E0767)]
|
||||
#[note]
|
||||
pub(crate) struct UnreachableLabel {
|
||||
#[primary_span]
|
||||
|
@ -495,7 +496,7 @@ pub(crate) struct BindingInNeverPattern {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_trait_impl_duplicate, code = "E0201")]
|
||||
#[diag(resolve_trait_impl_duplicate, code = E0201)]
|
||||
pub(crate) struct TraitImplDuplicate {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
|
@ -518,11 +519,11 @@ pub(crate) struct Relative2018 {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_ancestor_only, code = "E0742")]
|
||||
#[diag(resolve_ancestor_only, code = E0742)]
|
||||
pub(crate) struct AncestorOnly(#[primary_span] pub(crate) Span);
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_expected_found, code = "E0577")]
|
||||
#[diag(resolve_expected_found, code = E0577)]
|
||||
pub(crate) struct ExpectedFound {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
|
@ -532,7 +533,7 @@ pub(crate) struct ExpectedFound {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_indeterminate, code = "E0578")]
|
||||
#[diag(resolve_indeterminate, code = E0578)]
|
||||
pub(crate) struct Indeterminate(#[primary_span] pub(crate) Span);
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
|
@ -714,7 +715,7 @@ pub(crate) struct CannotDetermineMacroResolution {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_cannot_be_reexported_private, code = "E0364")]
|
||||
#[diag(resolve_cannot_be_reexported_private, code = E0364)]
|
||||
pub(crate) struct CannotBeReexportedPrivate {
|
||||
#[primary_span]
|
||||
pub(crate) span: Span,
|
||||
|
@ -722,7 +723,7 @@ pub(crate) struct CannotBeReexportedPrivate {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_cannot_be_reexported_crate_public, code = "E0364")]
|
||||
#[diag(resolve_cannot_be_reexported_crate_public, code = E0364)]
|
||||
pub(crate) struct CannotBeReexportedCratePublic {
|
||||
#[primary_span]
|
||||
pub(crate) span: Span,
|
||||
|
@ -730,7 +731,7 @@ pub(crate) struct CannotBeReexportedCratePublic {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_cannot_be_reexported_private, code = "E0365")]
|
||||
#[diag(resolve_cannot_be_reexported_private, code = E0365)]
|
||||
#[note(resolve_consider_declaring_with_pub)]
|
||||
pub(crate) struct CannotBeReexportedPrivateNS {
|
||||
#[primary_span]
|
||||
|
@ -740,7 +741,7 @@ pub(crate) struct CannotBeReexportedPrivateNS {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_cannot_be_reexported_crate_public, code = "E0365")]
|
||||
#[diag(resolve_cannot_be_reexported_crate_public, code = E0365)]
|
||||
#[note(resolve_consider_declaring_with_pub)]
|
||||
pub(crate) struct CannotBeReexportedCratePublicNS {
|
||||
#[primary_span]
|
||||
|
@ -779,7 +780,7 @@ pub(crate) struct ItemsInTraitsAreNotImportable {
|
|||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
#[diag(resolve_is_not_directly_importable, code = "E0253")]
|
||||
#[diag(resolve_is_not_directly_importable, code = E0253)]
|
||||
pub(crate) struct IsNotDirectlyImportable {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
|
|
|
@ -17,7 +17,7 @@ use crate::{NameBinding, NameBindingData, NameBindingKind, PathResult};
|
|||
use rustc_ast::NodeId;
|
||||
use rustc_data_structures::fx::FxHashSet;
|
||||
use rustc_data_structures::intern::Interned;
|
||||
use rustc_errors::{pluralize, struct_span_code_err, Applicability, MultiSpan};
|
||||
use rustc_errors::{codes::*, pluralize, struct_span_code_err, Applicability, MultiSpan};
|
||||
use rustc_hir::def::{self, DefKind, PartialRes};
|
||||
use rustc_middle::metadata::ModChild;
|
||||
use rustc_middle::metadata::Reexport;
|
||||
|
|
|
@ -16,7 +16,9 @@ use rustc_ast::ptr::P;
|
|||
use rustc_ast::visit::{self, AssocCtxt, BoundKind, FnCtxt, FnKind, Visitor};
|
||||
use rustc_ast::*;
|
||||
use rustc_data_structures::fx::{FxHashMap, FxHashSet, FxIndexMap};
|
||||
use rustc_errors::{Applicability, DiagnosticArgValue, IntoDiagnosticArg};
|
||||
use rustc_errors::{
|
||||
codes::*, struct_span_code_err, Applicability, DiagnosticArgValue, ErrCode, IntoDiagnosticArg,
|
||||
};
|
||||
use rustc_hir::def::Namespace::{self, *};
|
||||
use rustc_hir::def::{self, CtorKind, DefKind, LifetimeRes, NonMacroAttrKind, PartialRes, PerNS};
|
||||
use rustc_hir::def_id::{DefId, LocalDefId, CRATE_DEF_ID, LOCAL_CRATE};
|
||||
|
@ -533,21 +535,20 @@ impl<'a> PathSource<'a> {
|
|||
}
|
||||
}
|
||||
|
||||
fn error_code(self, has_unexpected_resolution: bool) -> String {
|
||||
use rustc_errors::error_code;
|
||||
fn error_code(self, has_unexpected_resolution: bool) -> ErrCode {
|
||||
match (self, has_unexpected_resolution) {
|
||||
(PathSource::Trait(_), true) => error_code!(E0404),
|
||||
(PathSource::Trait(_), false) => error_code!(E0405),
|
||||
(PathSource::Type, true) => error_code!(E0573),
|
||||
(PathSource::Type, false) => error_code!(E0412),
|
||||
(PathSource::Struct, true) => error_code!(E0574),
|
||||
(PathSource::Struct, false) => error_code!(E0422),
|
||||
(PathSource::Expr(..), true) | (PathSource::Delegation, true) => error_code!(E0423),
|
||||
(PathSource::Expr(..), false) | (PathSource::Delegation, false) => error_code!(E0425),
|
||||
(PathSource::Pat | PathSource::TupleStruct(..), true) => error_code!(E0532),
|
||||
(PathSource::Pat | PathSource::TupleStruct(..), false) => error_code!(E0531),
|
||||
(PathSource::TraitItem(..), true) => error_code!(E0575),
|
||||
(PathSource::TraitItem(..), false) => error_code!(E0576),
|
||||
(PathSource::Trait(_), true) => E0404,
|
||||
(PathSource::Trait(_), false) => E0405,
|
||||
(PathSource::Type, true) => E0573,
|
||||
(PathSource::Type, false) => E0412,
|
||||
(PathSource::Struct, true) => E0574,
|
||||
(PathSource::Struct, false) => E0422,
|
||||
(PathSource::Expr(..), true) | (PathSource::Delegation, true) => E0423,
|
||||
(PathSource::Expr(..), false) | (PathSource::Delegation, false) => E0425,
|
||||
(PathSource::Pat | PathSource::TupleStruct(..), true) => E0532,
|
||||
(PathSource::Pat | PathSource::TupleStruct(..), false) => E0531,
|
||||
(PathSource::TraitItem(..), true) => E0575,
|
||||
(PathSource::TraitItem(..), false) => E0576,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1673,13 +1674,8 @@ impl<'a: 'ast, 'b, 'ast, 'tcx> LateResolutionVisitor<'a, 'b, 'ast, 'tcx> {
|
|||
} else {
|
||||
("`'_` cannot be used here", "`'_` is a reserved lifetime name")
|
||||
};
|
||||
let mut diag = rustc_errors::struct_span_code_err!(
|
||||
self.r.dcx(),
|
||||
lifetime.ident.span,
|
||||
E0637,
|
||||
"{}",
|
||||
msg,
|
||||
);
|
||||
let mut diag =
|
||||
struct_span_code_err!(self.r.dcx(), lifetime.ident.span, E0637, "{}", msg,);
|
||||
diag.span_label(lifetime.ident.span, note);
|
||||
if elided {
|
||||
for rib in self.lifetime_ribs[i..].iter().rev() {
|
||||
|
@ -1863,7 +1859,7 @@ impl<'a: 'ast, 'b, 'ast, 'tcx> LateResolutionVisitor<'a, 'b, 'ast, 'tcx> {
|
|||
LifetimeRibKind::AnonymousCreateParameter { report_in_path: true, .. }
|
||||
| LifetimeRibKind::AnonymousWarn(_) => {
|
||||
let sess = self.r.tcx.sess;
|
||||
let mut err = rustc_errors::struct_span_code_err!(
|
||||
let mut err = struct_span_code_err!(
|
||||
sess.dcx(),
|
||||
path_span,
|
||||
E0726,
|
||||
|
@ -2608,7 +2604,7 @@ impl<'a: 'ast, 'b, 'ast, 'tcx> LateResolutionVisitor<'a, 'b, 'ast, 'tcx> {
|
|||
}
|
||||
|
||||
if param.ident.name == kw::UnderscoreLifetime {
|
||||
rustc_errors::struct_span_code_err!(
|
||||
struct_span_code_err!(
|
||||
self.r.dcx(),
|
||||
param.ident.span,
|
||||
E0637,
|
||||
|
@ -2622,7 +2618,7 @@ impl<'a: 'ast, 'b, 'ast, 'tcx> LateResolutionVisitor<'a, 'b, 'ast, 'tcx> {
|
|||
}
|
||||
|
||||
if param.ident.name == kw::StaticLifetime {
|
||||
rustc_errors::struct_span_code_err!(
|
||||
struct_span_code_err!(
|
||||
self.r.dcx(),
|
||||
param.ident.span,
|
||||
E0262,
|
||||
|
@ -3164,10 +3160,10 @@ impl<'a: 'ast, 'b, 'ast, 'tcx> LateResolutionVisitor<'a, 'b, 'ast, 'tcx> {
|
|||
// The method kind does not correspond to what appeared in the trait, report.
|
||||
let path = &self.current_trait_ref.as_ref().unwrap().1.path;
|
||||
let (code, kind) = match kind {
|
||||
AssocItemKind::Const(..) => (rustc_errors::error_code!(E0323), "const"),
|
||||
AssocItemKind::Fn(..) => (rustc_errors::error_code!(E0324), "method"),
|
||||
AssocItemKind::Type(..) => (rustc_errors::error_code!(E0325), "type"),
|
||||
AssocItemKind::Delegation(..) => (rustc_errors::error_code!(E0324), "method"),
|
||||
AssocItemKind::Const(..) => (E0323, "const"),
|
||||
AssocItemKind::Fn(..) => (E0324, "method"),
|
||||
AssocItemKind::Type(..) => (E0325, "type"),
|
||||
AssocItemKind::Delegation(..) => (E0324, "method"),
|
||||
AssocItemKind::MacCall(..) => span_bug!(span, "unexpanded macro"),
|
||||
};
|
||||
let trait_path = path_names_to_string(path);
|
||||
|
|
|
@ -16,8 +16,8 @@ use rustc_ast::{
|
|||
use rustc_ast_pretty::pprust::where_bound_predicate_to_string;
|
||||
use rustc_data_structures::fx::FxHashSet;
|
||||
use rustc_errors::{
|
||||
pluralize, struct_span_code_err, Applicability, Diagnostic, DiagnosticBuilder, ErrorGuaranteed,
|
||||
MultiSpan, SuggestionStyle,
|
||||
codes::*, pluralize, struct_span_code_err, Applicability, Diagnostic, DiagnosticBuilder,
|
||||
ErrorGuaranteed, MultiSpan, SuggestionStyle,
|
||||
};
|
||||
use rustc_hir as hir;
|
||||
use rustc_hir::def::{self, CtorKind, CtorOf, DefKind};
|
||||
|
@ -922,8 +922,8 @@ impl<'a: 'ast, 'ast, 'tcx> LateResolutionVisitor<'a, '_, 'ast, 'tcx> {
|
|||
path: &[Segment],
|
||||
span: Span,
|
||||
) {
|
||||
if let Some(err_code) = &err.code {
|
||||
if err_code == &rustc_errors::error_code!(E0425) {
|
||||
if let Some(err_code) = err.code {
|
||||
if err_code == E0425 {
|
||||
for label_rib in &self.label_ribs {
|
||||
for (label_ident, node_id) in &label_rib.bindings {
|
||||
let ident = path.last().unwrap().ident;
|
||||
|
@ -946,7 +946,7 @@ impl<'a: 'ast, 'ast, 'tcx> LateResolutionVisitor<'a, '_, 'ast, 'tcx> {
|
|||
}
|
||||
}
|
||||
}
|
||||
} else if err_code == &rustc_errors::error_code!(E0412) {
|
||||
} else if err_code == E0412 {
|
||||
if let Some(correct) = Self::likely_rust_type(path) {
|
||||
err.span_suggestion(
|
||||
span,
|
||||
|
@ -970,7 +970,7 @@ impl<'a: 'ast, 'ast, 'tcx> LateResolutionVisitor<'a, '_, 'ast, 'tcx> {
|
|||
if !is_self_type(path, source.namespace()) {
|
||||
return false;
|
||||
}
|
||||
err.code(rustc_errors::error_code!(E0411));
|
||||
err.code(E0411);
|
||||
err.span_label(span, "`Self` is only available in impls, traits, and type definitions");
|
||||
if let Some(item_kind) = self.diagnostic_metadata.current_item {
|
||||
if !item_kind.ident.span.is_dummy() {
|
||||
|
@ -999,7 +999,7 @@ impl<'a: 'ast, 'ast, 'tcx> LateResolutionVisitor<'a, '_, 'ast, 'tcx> {
|
|||
}
|
||||
|
||||
debug!("smart_resolve_path_fragment: E0424, source={:?}", source);
|
||||
err.code(rustc_errors::error_code!(E0424));
|
||||
err.code(E0424);
|
||||
err.span_label(
|
||||
span,
|
||||
match source {
|
||||
|
|
|
@ -35,7 +35,7 @@ use rustc_data_structures::fx::{FxHashMap, FxHashSet, FxIndexMap, FxIndexSet};
|
|||
use rustc_data_structures::intern::Interned;
|
||||
use rustc_data_structures::steal::Steal;
|
||||
use rustc_data_structures::sync::{FreezeReadGuard, Lrc};
|
||||
use rustc_errors::{Applicability, DiagnosticBuilder};
|
||||
use rustc_errors::{Applicability, DiagnosticBuilder, ErrCode};
|
||||
use rustc_expand::base::{DeriveResolutions, SyntaxExtension, SyntaxExtensionKind};
|
||||
use rustc_feature::BUILTIN_ATTRIBUTES;
|
||||
use rustc_hir::def::Namespace::{self, *};
|
||||
|
@ -256,7 +256,7 @@ enum ResolutionError<'a> {
|
|||
kind: &'static str,
|
||||
trait_path: String,
|
||||
trait_item_span: Span,
|
||||
code: String,
|
||||
code: ErrCode,
|
||||
},
|
||||
/// Error E0201: multiple impl items for the same trait item.
|
||||
TraitImplDuplicate { name: Symbol, trait_item_span: Span, old_span: Span },
|
||||
|
|
|
@ -15,7 +15,7 @@ use rustc_ast_pretty::pprust;
|
|||
use rustc_attr::StabilityLevel;
|
||||
use rustc_data_structures::intern::Interned;
|
||||
use rustc_data_structures::sync::Lrc;
|
||||
use rustc_errors::{struct_span_code_err, Applicability};
|
||||
use rustc_errors::{codes::*, struct_span_code_err, Applicability};
|
||||
use rustc_expand::base::{Annotatable, DeriveResolutions, Indeterminate, ResolverExpand};
|
||||
use rustc_expand::base::{SyntaxExtension, SyntaxExtensionKind};
|
||||
use rustc_expand::compile_declarative_macro;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue