mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-14 02:49:40 +00:00
Rollup merge of #136114 - compiler-errors:more-idents, r=jieyouxu
Use identifiers more in diagnostics code This should make the diagnostics code slightly more correct when rendering idents in mixed crate edition situations. Kinda a no-op, but a cleanup regardless. r? oli-obk or reassign
This commit is contained in:
commit
03fdcffa1e
@ -157,7 +157,7 @@ pub(crate) fn expand_deriving_coerce_pointee(
|
||||
{
|
||||
cx.dcx().emit_err(RequiresMaybeSized {
|
||||
span: pointee_ty_ident.span,
|
||||
name: pointee_ty_ident.name.to_ident_string(),
|
||||
name: pointee_ty_ident,
|
||||
});
|
||||
return;
|
||||
}
|
||||
@ -471,5 +471,5 @@ struct TooManyPointees {
|
||||
struct RequiresMaybeSized {
|
||||
#[primary_span]
|
||||
span: Span,
|
||||
name: String,
|
||||
name: Ident,
|
||||
}
|
||||
|
@ -2362,7 +2362,7 @@ fn try_report_async_mismatch<'tcx>(
|
||||
// the right span is a bit difficult.
|
||||
return Err(tcx.sess.dcx().emit_err(MethodShouldReturnFuture {
|
||||
span: tcx.def_span(impl_m.def_id),
|
||||
method_name: trait_m.name,
|
||||
method_name: tcx.item_ident(impl_m.def_id),
|
||||
trait_item_span: tcx.hir().span_if_local(trait_m.def_id),
|
||||
}));
|
||||
}
|
||||
|
@ -197,7 +197,7 @@ fn maybe_check_static_with_link_section(tcx: TyCtxt<'_>, id: LocalDefId) {
|
||||
|
||||
fn report_forbidden_specialization(tcx: TyCtxt<'_>, impl_item: DefId, parent_impl: DefId) {
|
||||
let span = tcx.def_span(impl_item);
|
||||
let ident = tcx.item_name(impl_item);
|
||||
let ident = tcx.item_ident(impl_item);
|
||||
|
||||
let err = match tcx.span_of_impl(parent_impl) {
|
||||
Ok(sp) => errors::ImplNotMarkedDefault::Ok { span, ident, ok_label: sp },
|
||||
@ -297,7 +297,7 @@ fn default_body_is_unstable(
|
||||
reason: Option<Symbol>,
|
||||
issue: Option<NonZero<u32>>,
|
||||
) {
|
||||
let missing_item_name = tcx.associated_item(item_did).name;
|
||||
let missing_item_name = tcx.item_ident(item_did);
|
||||
let (mut some_note, mut none_note, mut reason_str) = (false, false, String::new());
|
||||
match reason {
|
||||
Some(r) => {
|
||||
|
@ -292,7 +292,7 @@ fn visit_implementation_of_dispatch_from_dyn(checker: &Checker<'_>) -> Result<()
|
||||
|
||||
res = Err(tcx.dcx().emit_err(errors::DispatchFromDynZST {
|
||||
span,
|
||||
name: field.name,
|
||||
name: field.ident(tcx),
|
||||
ty: ty_a,
|
||||
}));
|
||||
|
||||
|
@ -465,8 +465,8 @@ fn emit_orphan_check_error<'tcx>(
|
||||
traits::OrphanCheckErr::UncoveredTyParams(UncoveredTyParams { uncovered, local_ty }) => {
|
||||
let mut reported = None;
|
||||
for param_def_id in uncovered {
|
||||
let span = tcx.def_ident_span(param_def_id).unwrap();
|
||||
let name = tcx.item_name(param_def_id);
|
||||
let name = tcx.item_ident(param_def_id);
|
||||
let span = name.span;
|
||||
|
||||
reported.get_or_insert(match local_ty {
|
||||
Some(local_type) => tcx.dcx().emit_err(errors::TyParamFirstLocal {
|
||||
@ -492,7 +492,7 @@ fn lint_uncovered_ty_params<'tcx>(
|
||||
|
||||
for param_def_id in uncovered {
|
||||
let span = tcx.def_ident_span(param_def_id).unwrap();
|
||||
let name = tcx.item_name(param_def_id);
|
||||
let name = tcx.item_ident(param_def_id);
|
||||
|
||||
match local_ty {
|
||||
Some(local_type) => tcx.emit_node_span_lint(
|
||||
|
@ -928,7 +928,7 @@ fn lower_enum_variant_types(tcx: TyCtxt<'_>, def_id: DefId) {
|
||||
tcx.dcx().emit_err(errors::EnumDiscriminantOverflowed {
|
||||
span,
|
||||
discr: prev_discr.unwrap().to_string(),
|
||||
item_name: tcx.item_name(variant.def_id),
|
||||
item_name: tcx.item_ident(variant.def_id),
|
||||
wrapped_discr: wrapped_discr.to_string(),
|
||||
});
|
||||
None
|
||||
@ -990,11 +990,10 @@ impl<'tcx> FieldUniquenessCheckContext<'tcx> {
|
||||
}
|
||||
|
||||
/// Check if a given field `ident` declared at `field_decl` has been declared elsewhere before.
|
||||
fn check_field_decl(&mut self, ident: Ident, field_decl: FieldDeclSpan) {
|
||||
fn check_field_decl(&mut self, field_name: Ident, field_decl: FieldDeclSpan) {
|
||||
use FieldDeclSpan::*;
|
||||
let field_name = ident.name;
|
||||
let ident = ident.normalize_to_macros_2_0();
|
||||
match (field_decl, self.seen_fields.get(&ident).copied()) {
|
||||
let field_name = field_name.normalize_to_macros_2_0();
|
||||
match (field_decl, self.seen_fields.get(&field_name).copied()) {
|
||||
(NotNested(span), Some(NotNested(prev_span))) => {
|
||||
self.tcx.dcx().emit_err(errors::FieldAlreadyDeclared::NotNested {
|
||||
field_name,
|
||||
@ -1035,7 +1034,7 @@ impl<'tcx> FieldUniquenessCheckContext<'tcx> {
|
||||
});
|
||||
}
|
||||
(field_decl, None) => {
|
||||
self.seen_fields.insert(ident, field_decl);
|
||||
self.seen_fields.insert(field_name, field_decl);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -55,7 +55,7 @@ pub(super) fn find_opaque_ty_constraints_for_impl_trait_in_assoc_type(
|
||||
} else {
|
||||
let reported = tcx.dcx().emit_err(UnconstrainedOpaqueType {
|
||||
span: tcx.def_span(def_id),
|
||||
name: tcx.item_name(parent_def_id.to_def_id()),
|
||||
name: tcx.item_ident(parent_def_id.to_def_id()),
|
||||
what: "impl",
|
||||
});
|
||||
Ty::new_error(tcx, reported)
|
||||
@ -136,7 +136,7 @@ pub(super) fn find_opaque_ty_constraints_for_tait(tcx: TyCtxt<'_>, def_id: Local
|
||||
}
|
||||
let reported = tcx.dcx().emit_err(UnconstrainedOpaqueType {
|
||||
span: tcx.def_span(def_id),
|
||||
name: tcx.item_name(parent_def_id.to_def_id()),
|
||||
name: tcx.item_ident(parent_def_id.to_def_id()),
|
||||
what: match tcx.hir_node(scope) {
|
||||
_ if scope == hir::CRATE_HIR_ID => "module",
|
||||
Node::Item(hir::Item { kind: hir::ItemKind::Mod(_), .. }) => "module",
|
||||
|
@ -217,7 +217,7 @@ pub(crate) struct DropImplOnWrongItem {
|
||||
pub(crate) enum FieldAlreadyDeclared {
|
||||
#[diag(hir_analysis_field_already_declared, code = E0124)]
|
||||
NotNested {
|
||||
field_name: Symbol,
|
||||
field_name: Ident,
|
||||
#[primary_span]
|
||||
#[label]
|
||||
span: Span,
|
||||
@ -226,7 +226,7 @@ pub(crate) enum FieldAlreadyDeclared {
|
||||
},
|
||||
#[diag(hir_analysis_field_already_declared_current_nested)]
|
||||
CurrentNested {
|
||||
field_name: Symbol,
|
||||
field_name: Ident,
|
||||
#[primary_span]
|
||||
#[label]
|
||||
span: Span,
|
||||
@ -239,7 +239,7 @@ pub(crate) enum FieldAlreadyDeclared {
|
||||
},
|
||||
#[diag(hir_analysis_field_already_declared_previous_nested)]
|
||||
PreviousNested {
|
||||
field_name: Symbol,
|
||||
field_name: Ident,
|
||||
#[primary_span]
|
||||
#[label]
|
||||
span: Span,
|
||||
@ -252,7 +252,7 @@ pub(crate) enum FieldAlreadyDeclared {
|
||||
},
|
||||
#[diag(hir_analysis_field_already_declared_both_nested)]
|
||||
BothNested {
|
||||
field_name: Symbol,
|
||||
field_name: Ident,
|
||||
#[primary_span]
|
||||
#[label]
|
||||
span: Span,
|
||||
@ -418,7 +418,7 @@ pub(crate) struct ValueOfAssociatedStructAlreadySpecified {
|
||||
pub(crate) struct UnconstrainedOpaqueType {
|
||||
#[primary_span]
|
||||
pub span: Span,
|
||||
pub name: Symbol,
|
||||
pub name: Ident,
|
||||
pub what: &'static str,
|
||||
}
|
||||
|
||||
@ -802,7 +802,7 @@ pub(crate) struct EnumDiscriminantOverflowed {
|
||||
#[label]
|
||||
pub span: Span,
|
||||
pub discr: String,
|
||||
pub item_name: Symbol,
|
||||
pub item_name: Ident,
|
||||
pub wrapped_discr: String,
|
||||
}
|
||||
|
||||
@ -893,7 +893,7 @@ pub(crate) enum ImplNotMarkedDefault {
|
||||
span: Span,
|
||||
#[label(hir_analysis_ok_label)]
|
||||
ok_label: Span,
|
||||
ident: Symbol,
|
||||
ident: Ident,
|
||||
},
|
||||
#[diag(hir_analysis_impl_not_marked_default_err, code = E0520)]
|
||||
#[note]
|
||||
@ -901,7 +901,7 @@ pub(crate) enum ImplNotMarkedDefault {
|
||||
#[primary_span]
|
||||
span: Span,
|
||||
cname: Symbol,
|
||||
ident: Symbol,
|
||||
ident: Ident,
|
||||
},
|
||||
}
|
||||
|
||||
@ -977,7 +977,7 @@ pub(crate) struct MissingTraitItemUnstable {
|
||||
pub some_note: bool,
|
||||
#[note(hir_analysis_none_note)]
|
||||
pub none_note: bool,
|
||||
pub missing_item_name: Symbol,
|
||||
pub missing_item_name: Ident,
|
||||
pub feature: Symbol,
|
||||
pub reason: String,
|
||||
}
|
||||
@ -1249,7 +1249,7 @@ pub(crate) struct InherentNominal {
|
||||
pub(crate) struct DispatchFromDynZST<'a> {
|
||||
#[primary_span]
|
||||
pub span: Span,
|
||||
pub name: Symbol,
|
||||
pub name: Ident,
|
||||
pub ty: Ty<'a>,
|
||||
}
|
||||
|
||||
@ -1389,7 +1389,7 @@ pub(crate) struct TyParamFirstLocal<'tcx> {
|
||||
pub span: Span,
|
||||
#[note(hir_analysis_case_note)]
|
||||
pub note: (),
|
||||
pub param: Symbol,
|
||||
pub param: Ident,
|
||||
pub local_type: Ty<'tcx>,
|
||||
}
|
||||
|
||||
@ -1401,7 +1401,7 @@ pub(crate) struct TyParamFirstLocalLint<'tcx> {
|
||||
pub span: Span,
|
||||
#[note(hir_analysis_case_note)]
|
||||
pub note: (),
|
||||
pub param: Symbol,
|
||||
pub param: Ident,
|
||||
pub local_type: Ty<'tcx>,
|
||||
}
|
||||
|
||||
@ -1414,7 +1414,7 @@ pub(crate) struct TyParamSome {
|
||||
pub span: Span,
|
||||
#[note(hir_analysis_only_note)]
|
||||
pub note: (),
|
||||
pub param: Symbol,
|
||||
pub param: Ident,
|
||||
}
|
||||
|
||||
#[derive(LintDiagnostic)]
|
||||
@ -1425,7 +1425,7 @@ pub(crate) struct TyParamSomeLint {
|
||||
pub span: Span,
|
||||
#[note(hir_analysis_only_note)]
|
||||
pub note: (),
|
||||
pub param: Symbol,
|
||||
pub param: Ident,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
@ -1533,7 +1533,7 @@ pub(crate) struct UnsupportedDelegation<'a> {
|
||||
pub(crate) struct MethodShouldReturnFuture {
|
||||
#[primary_span]
|
||||
pub span: Span,
|
||||
pub method_name: Symbol,
|
||||
pub method_name: Ident,
|
||||
#[note]
|
||||
pub trait_item_span: Option<Span>,
|
||||
}
|
||||
@ -1585,7 +1585,7 @@ pub(crate) struct UnconstrainedGenericParameter {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
pub span: Span,
|
||||
pub param_name: Symbol,
|
||||
pub param_name: Ident,
|
||||
pub param_def_kind: &'static str,
|
||||
#[note(hir_analysis_const_param_note)]
|
||||
pub const_param_note: bool,
|
||||
|
@ -495,7 +495,7 @@ impl<'a, 'tcx> WrongNumberOfGenericArgs<'a, 'tcx> {
|
||||
.iter()
|
||||
.any(|constraint| constraint.ident.name == item.name)
|
||||
})
|
||||
.map(|item| item.name.to_ident_string())
|
||||
.map(|item| self.tcx.item_ident(item.def_id).to_string())
|
||||
.collect()
|
||||
} else {
|
||||
Vec::default()
|
||||
|
@ -152,7 +152,7 @@ pub(crate) fn enforce_impl_lifetime_params_are_constrained(
|
||||
{
|
||||
let mut diag = tcx.dcx().create_err(UnconstrainedGenericParameter {
|
||||
span: tcx.def_span(param.def_id),
|
||||
param_name: param.name,
|
||||
param_name: tcx.item_ident(param.def_id),
|
||||
param_def_kind: tcx.def_descr(param.def_id),
|
||||
const_param_note: false,
|
||||
const_param_note2: false,
|
||||
@ -223,7 +223,7 @@ pub(crate) fn enforce_impl_non_lifetime_params_are_constrained(
|
||||
let const_param_note = matches!(param.kind, ty::GenericParamDefKind::Const { .. });
|
||||
let mut diag = tcx.dcx().create_err(UnconstrainedGenericParameter {
|
||||
span: tcx.def_span(param.def_id),
|
||||
param_name: param.name,
|
||||
param_name: tcx.item_ident(param.def_id),
|
||||
param_def_kind: tcx.def_descr(param.def_id),
|
||||
const_param_note,
|
||||
const_param_note2: const_param_note,
|
||||
|
@ -3337,10 +3337,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||
})
|
||||
.map(|mut field_path| {
|
||||
field_path.pop();
|
||||
field_path
|
||||
.iter()
|
||||
.map(|id| format!("{}.", id.name.to_ident_string()))
|
||||
.collect::<String>()
|
||||
field_path.iter().map(|id| format!("{}.", id)).collect::<String>()
|
||||
})
|
||||
.collect::<Vec<_>>();
|
||||
candidate_fields.sort();
|
||||
|
@ -453,7 +453,7 @@ fn report_unexpected_variant_res(
|
||||
);
|
||||
let fields = fields
|
||||
.iter()
|
||||
.map(|field| format!("{}: _", field.name.to_ident_string()))
|
||||
.map(|field| format!("{}: _", field.ident(tcx)))
|
||||
.collect::<Vec<_>>()
|
||||
.join(", ");
|
||||
let sugg = format!(" {{ {} }}", fields);
|
||||
|
@ -2714,7 +2714,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||
.map(|field_path| {
|
||||
field_path
|
||||
.iter()
|
||||
.map(|id| id.name.to_ident_string())
|
||||
.map(|id| id.to_string())
|
||||
.collect::<Vec<String>>()
|
||||
.join(".")
|
||||
})
|
||||
|
@ -141,7 +141,7 @@ fn lint_expr(cx: &LateContext<'_>, expr: &Expr<'_>) {
|
||||
expr.hir_id,
|
||||
method.ident.span,
|
||||
DanglingPointersFromTemporaries {
|
||||
callee: method.ident.name,
|
||||
callee: method.ident,
|
||||
ty,
|
||||
ptr_span: method.ident.span,
|
||||
temporary_span: receiver.span,
|
||||
|
@ -1150,7 +1150,7 @@ pub(crate) struct IgnoredUnlessCrateSpecified<'a> {
|
||||
#[help(lint_help_visit)]
|
||||
// FIXME: put #[primary_span] on `ptr_span` once it does not cause conflicts
|
||||
pub(crate) struct DanglingPointersFromTemporaries<'tcx> {
|
||||
pub callee: Symbol,
|
||||
pub callee: Ident,
|
||||
pub ty: Ty<'tcx>,
|
||||
#[label(lint_label_ptr)]
|
||||
pub ptr_span: Span,
|
||||
@ -1351,7 +1351,7 @@ pub(crate) enum NonUpperCaseGlobalSub {
|
||||
#[diag(lint_noop_method_call)]
|
||||
#[note]
|
||||
pub(crate) struct NoopMethodCallDiag<'a> {
|
||||
pub method: Symbol,
|
||||
pub method: Ident,
|
||||
pub orig_ty: Ty<'a>,
|
||||
pub trait_: Symbol,
|
||||
#[suggestion(code = "", applicability = "machine-applicable")]
|
||||
|
@ -343,5 +343,5 @@ fn path_span_without_args(path: &Path<'_>) -> Span {
|
||||
|
||||
/// Return a "error message-able" ident for the last segment of the `Path`
|
||||
fn path_name_to_string(path: &Path<'_>) -> String {
|
||||
path.segments.last().unwrap().ident.name.to_ident_string()
|
||||
path.segments.last().unwrap().ident.to_string()
|
||||
}
|
||||
|
@ -129,7 +129,7 @@ impl<'tcx> LateLintPass<'tcx> for NoopMethodCall {
|
||||
_ => None,
|
||||
};
|
||||
cx.emit_span_lint(NOOP_METHOD_CALL, span, NoopMethodCallDiag {
|
||||
method: call.ident.name,
|
||||
method: call.ident,
|
||||
orig_ty,
|
||||
trait_,
|
||||
label: span,
|
||||
|
@ -45,7 +45,7 @@ fn path_for_pass_by_value(cx: &LateContext<'_>, ty: &hir::Ty<'_>) -> Option<Stri
|
||||
if let TyKind::Path(QPath::Resolved(_, path)) = &ty.kind {
|
||||
match path.res {
|
||||
Res::Def(_, def_id) if cx.tcx.has_attr(def_id, sym::rustc_pass_by_value) => {
|
||||
let name = cx.tcx.item_name(def_id).to_ident_string();
|
||||
let name = cx.tcx.item_ident(def_id);
|
||||
let path_segment = path.segments.last().unwrap();
|
||||
return Some(format!("{}{}", name, gen_args(cx, path_segment)));
|
||||
}
|
||||
|
@ -1596,6 +1596,15 @@ impl<'tcx> TyCtxt<'tcx> {
|
||||
Some(Ident::new(def, span))
|
||||
}
|
||||
|
||||
/// Look up the name and span of a definition.
|
||||
///
|
||||
/// See [`item_name`][Self::item_name] for more information.
|
||||
pub fn item_ident(self, def_id: DefId) -> Ident {
|
||||
self.opt_item_ident(def_id).unwrap_or_else(|| {
|
||||
bug!("item_ident: no name for {:?}", self.def_path(def_id));
|
||||
})
|
||||
}
|
||||
|
||||
pub fn opt_associated_item(self, def_id: DefId) -> Option<AssocItem> {
|
||||
if let DefKind::AssocConst | DefKind::AssocFn | DefKind::AssocTy = self.def_kind(def_id) {
|
||||
Some(self.associated_item(def_id))
|
||||
|
@ -7,7 +7,7 @@ use rustc_macros::{Diagnostic, LintDiagnostic, Subdiagnostic};
|
||||
use rustc_middle::ty::{self, Ty};
|
||||
use rustc_pattern_analysis::errors::Uncovered;
|
||||
use rustc_pattern_analysis::rustc::RustcPatCtxt;
|
||||
use rustc_span::{Span, Symbol};
|
||||
use rustc_span::{Ident, Span, Symbol};
|
||||
|
||||
use crate::fluent_generated as fluent;
|
||||
|
||||
@ -753,7 +753,7 @@ pub(crate) struct BindingsWithVariantName {
|
||||
#[suggestion(code = "{ty_path}::{name}", applicability = "machine-applicable")]
|
||||
pub(crate) suggestion: Option<Span>,
|
||||
pub(crate) ty_path: String,
|
||||
pub(crate) name: Symbol,
|
||||
pub(crate) name: Ident,
|
||||
}
|
||||
|
||||
#[derive(LintDiagnostic)]
|
||||
@ -797,7 +797,7 @@ pub(crate) struct BorrowOfMovedValue {
|
||||
pub(crate) binding_span: Span,
|
||||
#[label(mir_build_value_borrowed_label)]
|
||||
pub(crate) conflicts_ref: Vec<Span>,
|
||||
pub(crate) name: Symbol,
|
||||
pub(crate) name: Ident,
|
||||
pub(crate) ty: String,
|
||||
#[suggestion(code = "ref ", applicability = "machine-applicable")]
|
||||
pub(crate) suggest_borrowing: Option<Span>,
|
||||
|
@ -25,7 +25,7 @@ use rustc_session::lint::builtin::{
|
||||
};
|
||||
use rustc_span::edit_distance::find_best_match_for_name;
|
||||
use rustc_span::hygiene::DesugaringKind;
|
||||
use rustc_span::{Span, sym};
|
||||
use rustc_span::{Ident, Span, sym};
|
||||
use rustc_trait_selection::infer::InferCtxtExt;
|
||||
use tracing::instrument;
|
||||
|
||||
@ -800,7 +800,7 @@ fn check_borrow_conflicts_in_at_patterns<'tcx>(cx: &MatchVisitor<'_, 'tcx>, pat:
|
||||
sess.dcx().emit_err(BorrowOfMovedValue {
|
||||
binding_span: pat.span,
|
||||
conflicts_ref,
|
||||
name,
|
||||
name: Ident::new(name, pat.span),
|
||||
ty,
|
||||
suggest_borrowing: Some(pat.span.shrink_to_lo()),
|
||||
has_path: path.is_some(),
|
||||
@ -908,7 +908,7 @@ fn check_for_bindings_named_same_as_variants(
|
||||
None
|
||||
},
|
||||
ty_path,
|
||||
name,
|
||||
name: Ident::new(name, pat.span),
|
||||
},
|
||||
)
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ use rustc_middle::mir::AssertKind;
|
||||
use rustc_middle::ty::TyCtxt;
|
||||
use rustc_session::lint::{self, Lint};
|
||||
use rustc_span::def_id::DefId;
|
||||
use rustc_span::{Span, Symbol};
|
||||
use rustc_span::{Ident, Span, Symbol};
|
||||
|
||||
use crate::fluent_generated as fluent;
|
||||
|
||||
@ -114,7 +114,7 @@ pub(crate) struct FnItemRef {
|
||||
#[suggestion(code = "{sugg}", applicability = "unspecified")]
|
||||
pub span: Span,
|
||||
pub sugg: String,
|
||||
pub ident: String,
|
||||
pub ident: Ident,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
|
@ -168,7 +168,7 @@ impl<'tcx> FunctionItemRefChecker<'_, 'tcx> {
|
||||
s
|
||||
}
|
||||
};
|
||||
let ident = self.tcx.item_name(fn_id).to_ident_string();
|
||||
let ident = self.tcx.item_ident(fn_id);
|
||||
let ty_params = fn_args.types().map(|ty| format!("{ty}"));
|
||||
let const_params = fn_args.consts().map(|c| format!("{c}"));
|
||||
let params = ty_params.chain(const_params).join(", ");
|
||||
@ -177,7 +177,7 @@ impl<'tcx> FunctionItemRefChecker<'_, 'tcx> {
|
||||
let ret = if fn_sig.output().skip_binder().is_unit() { "" } else { " -> _" };
|
||||
let sugg = format!(
|
||||
"{} as {}{}fn({}{}){}",
|
||||
if params.is_empty() { ident.clone() } else { format!("{ident}::<{params}>") },
|
||||
if params.is_empty() { ident.to_string() } else { format!("{ident}::<{params}>") },
|
||||
unsafety,
|
||||
abi,
|
||||
vec!["_"; num_args].join(", "),
|
||||
|
@ -3233,7 +3233,7 @@ pub(crate) struct MalformedCfgAttr {
|
||||
pub(crate) struct UnknownBuiltinConstruct {
|
||||
#[primary_span]
|
||||
pub span: Span,
|
||||
pub name: Symbol,
|
||||
pub name: Ident,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
|
@ -1958,7 +1958,7 @@ impl<'a> Parser<'a> {
|
||||
} else {
|
||||
let err = self.dcx().create_err(errors::UnknownBuiltinConstruct {
|
||||
span: lo.to(ident.span),
|
||||
name: ident.name,
|
||||
name: ident,
|
||||
});
|
||||
return Err(err);
|
||||
};
|
||||
|
@ -677,7 +677,7 @@ impl<'ra, 'tcx> Resolver<'ra, 'tcx> {
|
||||
}
|
||||
if could_be_path {
|
||||
let import_suggestions = self.lookup_import_candidates(
|
||||
Ident::with_dummy_span(name),
|
||||
name,
|
||||
Namespace::ValueNS,
|
||||
&parent_scope,
|
||||
&|res: Res| {
|
||||
|
@ -59,7 +59,7 @@ pub(crate) struct NameAlreadyUsedInParameterList {
|
||||
pub(crate) span: Span,
|
||||
#[label(resolve_first_use_of_name)]
|
||||
pub(crate) first_use_span: Span,
|
||||
pub(crate) name: Symbol,
|
||||
pub(crate) name: Ident,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
@ -142,7 +142,7 @@ pub(crate) struct VariableBoundWithDifferentMode {
|
||||
pub(crate) span: Span,
|
||||
#[label(resolve_first_binding_span)]
|
||||
pub(crate) first_binding_span: Span,
|
||||
pub(crate) variable_name: Symbol,
|
||||
pub(crate) variable_name: Ident,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
@ -151,7 +151,7 @@ pub(crate) struct IdentifierBoundMoreThanOnceInParameterList {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
pub(crate) span: Span,
|
||||
pub(crate) identifier: Symbol,
|
||||
pub(crate) identifier: Ident,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
@ -160,7 +160,7 @@ pub(crate) struct IdentifierBoundMoreThanOnceInSamePattern {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
pub(crate) span: Span,
|
||||
pub(crate) identifier: Symbol,
|
||||
pub(crate) identifier: Ident,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
@ -478,7 +478,7 @@ pub(crate) struct TraitImplDuplicate {
|
||||
pub(crate) old_span: Span,
|
||||
#[label(resolve_trait_item_span)]
|
||||
pub(crate) trait_item_span: Span,
|
||||
pub(crate) name: Symbol,
|
||||
pub(crate) name: Ident,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
@ -976,7 +976,7 @@ pub(crate) struct AttemptToDefineBuiltinMacroTwice {
|
||||
pub(crate) struct VariableIsNotBoundInAllPatterns {
|
||||
#[primary_span]
|
||||
pub(crate) multispan: MultiSpan,
|
||||
pub(crate) name: Symbol,
|
||||
pub(crate) name: Ident,
|
||||
}
|
||||
|
||||
#[derive(Subdiagnostic, Debug, Clone)]
|
||||
@ -984,7 +984,7 @@ pub(crate) struct VariableIsNotBoundInAllPatterns {
|
||||
pub(crate) struct PatternDoesntBindName {
|
||||
#[primary_span]
|
||||
pub(crate) span: Span,
|
||||
pub(crate) name: Symbol,
|
||||
pub(crate) name: Ident,
|
||||
}
|
||||
|
||||
#[derive(Subdiagnostic, Debug, Clone)]
|
||||
@ -1260,7 +1260,7 @@ pub(crate) struct TraitImplMismatch {
|
||||
#[primary_span]
|
||||
#[label]
|
||||
pub(crate) span: Span,
|
||||
pub(crate) name: Symbol,
|
||||
pub(crate) name: Ident,
|
||||
pub(crate) kind: &'static str,
|
||||
pub(crate) trait_path: String,
|
||||
#[label(resolve_trait_impl_mismatch_label_item)]
|
||||
|
@ -2835,7 +2835,7 @@ impl<'a, 'ast, 'ra: 'ast, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
|
||||
match seen_bindings.entry(ident) {
|
||||
Entry::Occupied(entry) => {
|
||||
let span = *entry.get();
|
||||
let err = ResolutionError::NameAlreadyUsedInParameterList(ident.name, span);
|
||||
let err = ResolutionError::NameAlreadyUsedInParameterList(ident, span);
|
||||
self.report_error(param.ident.span, err);
|
||||
let rib = match param.kind {
|
||||
GenericParamKind::Lifetime => {
|
||||
@ -3422,7 +3422,7 @@ impl<'a, 'ast, 'ra: 'ast, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
|
||||
match seen_trait_items.entry(id_in_trait) {
|
||||
Entry::Occupied(entry) => {
|
||||
self.report_error(span, ResolutionError::TraitImplDuplicate {
|
||||
name: ident.name,
|
||||
name: ident,
|
||||
old_span: *entry.get(),
|
||||
trait_item_span: binding.span,
|
||||
});
|
||||
@ -3457,7 +3457,7 @@ impl<'a, 'ast, 'ra: 'ast, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
|
||||
};
|
||||
let trait_path = path_names_to_string(path);
|
||||
self.report_error(span, ResolutionError::TraitImplMismatch {
|
||||
name: ident.name,
|
||||
name: ident,
|
||||
kind,
|
||||
code,
|
||||
trait_path,
|
||||
@ -3640,9 +3640,8 @@ impl<'a, 'ast, 'ra: 'ast, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
|
||||
.filter(|(_, pat)| pat.id != pat_outer.id)
|
||||
.flat_map(|(map, _)| map);
|
||||
|
||||
for (key, binding_inner) in inners {
|
||||
let name = key.name;
|
||||
match map_outer.get(key) {
|
||||
for (&name, binding_inner) in inners {
|
||||
match map_outer.get(&name) {
|
||||
None => {
|
||||
// The inner binding is missing in the outer.
|
||||
let binding_error =
|
||||
@ -3880,7 +3879,7 @@ impl<'a, 'ast, 'ra: 'ast, 'tcx> LateResolutionVisitor<'a, 'ast, 'ra, 'tcx> {
|
||||
// `Variant(a, a)`:
|
||||
_ => IdentifierBoundMoreThanOnceInSamePattern,
|
||||
};
|
||||
self.report_error(ident.span, error(ident.name));
|
||||
self.report_error(ident.span, error(ident));
|
||||
}
|
||||
|
||||
// Record as bound if it's valid:
|
||||
|
@ -1636,13 +1636,12 @@ impl<'ast, 'ra: 'ast, 'tcx> LateResolutionVisitor<'_, 'ast, 'ra, 'tcx> {
|
||||
.enumerate()
|
||||
.map(|(idx, new)| (new, old_fields.get(idx)))
|
||||
.map(|(new, old)| {
|
||||
let new = new.name.to_ident_string();
|
||||
if let Some(Some(old)) = old
|
||||
&& new != *old
|
||||
&& new.as_str() != old
|
||||
{
|
||||
format!("{new}: {old}")
|
||||
} else {
|
||||
new
|
||||
new.to_string()
|
||||
}
|
||||
})
|
||||
.collect::<Vec<String>>()
|
||||
|
@ -214,7 +214,7 @@ enum Used {
|
||||
|
||||
#[derive(Debug)]
|
||||
struct BindingError {
|
||||
name: Symbol,
|
||||
name: Ident,
|
||||
origin: BTreeSet<Span>,
|
||||
target: BTreeSet<Span>,
|
||||
could_be_path: bool,
|
||||
@ -226,7 +226,7 @@ enum ResolutionError<'ra> {
|
||||
GenericParamsFromOuterItem(Res, HasGenericParams, DefKind),
|
||||
/// Error E0403: the name is already used for a type or const parameter in this generic
|
||||
/// parameter list.
|
||||
NameAlreadyUsedInParameterList(Symbol, Span),
|
||||
NameAlreadyUsedInParameterList(Ident, Span),
|
||||
/// Error E0407: method is not a member of trait.
|
||||
MethodNotMemberOfTrait(Ident, String, Option<Symbol>),
|
||||
/// Error E0437: type is not a member of trait.
|
||||
@ -236,11 +236,11 @@ enum ResolutionError<'ra> {
|
||||
/// Error E0408: variable `{}` is not bound in all patterns.
|
||||
VariableNotBoundInPattern(BindingError, ParentScope<'ra>),
|
||||
/// Error E0409: variable `{}` is bound in inconsistent ways within the same match arm.
|
||||
VariableBoundWithDifferentMode(Symbol, Span),
|
||||
VariableBoundWithDifferentMode(Ident, Span),
|
||||
/// Error E0415: identifier is bound more than once in this parameter list.
|
||||
IdentifierBoundMoreThanOnceInParameterList(Symbol),
|
||||
IdentifierBoundMoreThanOnceInParameterList(Ident),
|
||||
/// Error E0416: identifier is bound more than once in the same pattern.
|
||||
IdentifierBoundMoreThanOnceInSamePattern(Symbol),
|
||||
IdentifierBoundMoreThanOnceInSamePattern(Ident),
|
||||
/// Error E0426: use of undeclared label.
|
||||
UndeclaredLabel { name: Symbol, suggestion: Option<LabelSuggestion> },
|
||||
/// Error E0429: `self` imports are only allowed within a `{ }` list.
|
||||
@ -292,14 +292,14 @@ enum ResolutionError<'ra> {
|
||||
UnreachableLabel { name: Symbol, definition_span: Span, suggestion: Option<LabelSuggestion> },
|
||||
/// Error E0323, E0324, E0325: mismatch between trait item and impl item.
|
||||
TraitImplMismatch {
|
||||
name: Symbol,
|
||||
name: Ident,
|
||||
kind: &'static str,
|
||||
trait_path: String,
|
||||
trait_item_span: Span,
|
||||
code: ErrCode,
|
||||
},
|
||||
/// Error E0201: multiple impl items for the same trait item.
|
||||
TraitImplDuplicate { name: Symbol, trait_item_span: Span, old_span: Span },
|
||||
TraitImplDuplicate { name: Ident, trait_item_span: Span, old_span: Span },
|
||||
/// Inline asm `sym` operand must refer to a `fn` or `static`.
|
||||
InvalidAsmSym,
|
||||
/// `self` used instead of `Self` in a generic parameter
|
||||
|
@ -13,7 +13,7 @@ use rustc_middle::ty::print::PrintTraitRefExt as _;
|
||||
use rustc_middle::ty::{self, GenericArgsRef, GenericParamDefKind, TyCtxt};
|
||||
use rustc_parse_format::{ParseMode, Parser, Piece, Position};
|
||||
use rustc_session::lint::builtin::UNKNOWN_OR_MALFORMED_DIAGNOSTIC_ATTRIBUTES;
|
||||
use rustc_span::{Span, Symbol, kw, sym};
|
||||
use rustc_span::{Ident, Span, Symbol, kw, sym};
|
||||
use tracing::{debug, info};
|
||||
use {rustc_attr_parsing as attr, rustc_hir as hir};
|
||||
|
||||
@ -375,7 +375,7 @@ impl IgnoredDiagnosticOption {
|
||||
#[help]
|
||||
pub struct UnknownFormatParameterForOnUnimplementedAttr {
|
||||
argument_name: Symbol,
|
||||
trait_name: Symbol,
|
||||
trait_name: Ident,
|
||||
}
|
||||
|
||||
#[derive(LintDiagnostic)]
|
||||
@ -792,7 +792,7 @@ impl<'tcx> OnUnimplementedFormatString {
|
||||
tcx.trait_id_of_impl(item_def_id)
|
||||
.expect("expected `on_unimplemented` to correspond to a trait")
|
||||
};
|
||||
let trait_name = tcx.item_name(trait_def_id);
|
||||
let trait_name = tcx.item_ident(trait_def_id);
|
||||
let generics = tcx.generics_of(item_def_id);
|
||||
let s = self.symbol.as_str();
|
||||
let mut parser = Parser::new(s, None, None, false, ParseMode::Format);
|
||||
@ -821,7 +821,11 @@ impl<'tcx> OnUnimplementedFormatString {
|
||||
Position::ArgumentNamed(s) => {
|
||||
match Symbol::intern(s) {
|
||||
// `{ThisTraitsName}` is allowed
|
||||
s if s == trait_name && !self.is_diagnostic_namespace_variant => (),
|
||||
s if s == trait_name.name
|
||||
&& !self.is_diagnostic_namespace_variant =>
|
||||
{
|
||||
()
|
||||
}
|
||||
s if ALLOWED_FORMAT_SYMBOLS.contains(&s)
|
||||
&& !self.is_diagnostic_namespace_variant =>
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user