Remove textual span from diagnostic string
This commit is contained in:
parent
a16f686e4a
commit
15f93473f1
125 changed files with 329 additions and 376 deletions
|
@ -135,7 +135,8 @@ fn msg_span_from_free_region(
|
|||
) -> (String, Option<Span>) {
|
||||
match *region {
|
||||
ty::ReEarlyBound(_) | ty::ReFree(_) => {
|
||||
msg_span_from_early_bound_and_free_regions(tcx, region)
|
||||
let (msg, span) = msg_span_from_early_bound_and_free_regions(tcx, region);
|
||||
(msg, Some(span))
|
||||
}
|
||||
ty::ReStatic => ("the static lifetime".to_owned(), alt_span),
|
||||
ty::ReEmpty(ty::UniverseIndex::ROOT) => ("an empty lifetime".to_owned(), alt_span),
|
||||
|
@ -147,20 +148,12 @@ fn msg_span_from_free_region(
|
|||
fn msg_span_from_early_bound_and_free_regions(
|
||||
tcx: TyCtxt<'tcx>,
|
||||
region: ty::Region<'tcx>,
|
||||
) -> (String, Option<Span>) {
|
||||
) -> (String, Span) {
|
||||
let sm = tcx.sess.source_map();
|
||||
|
||||
let scope = region.free_region_binding_scope(tcx);
|
||||
let node = tcx.hir().local_def_id_to_hir_id(scope.expect_local());
|
||||
let tag = match tcx.hir().find(node) {
|
||||
Some(Node::Block(_) | Node::Expr(_)) => "body",
|
||||
Some(Node::Item(it)) => item_scope_tag(&it),
|
||||
Some(Node::TraitItem(it)) => trait_item_scope_tag(&it),
|
||||
Some(Node::ImplItem(it)) => impl_item_scope_tag(&it),
|
||||
Some(Node::ForeignItem(it)) => foreign_item_scope_tag(&it),
|
||||
_ => unreachable!(),
|
||||
};
|
||||
let (prefix, span) = match *region {
|
||||
match *region {
|
||||
ty::ReEarlyBound(ref br) => {
|
||||
let mut sp = sm.guess_head_span(tcx.hir().span(node));
|
||||
if let Some(param) =
|
||||
|
@ -168,7 +161,7 @@ fn msg_span_from_early_bound_and_free_regions(
|
|||
{
|
||||
sp = param.span;
|
||||
}
|
||||
(format!("the lifetime `{}` as defined on", br.name), sp)
|
||||
(format!("the lifetime `{}` as defined here", br.name), sp)
|
||||
}
|
||||
ty::ReFree(ty::FreeRegion {
|
||||
bound_region: ty::BoundRegionKind::BrNamed(_, name), ..
|
||||
|
@ -179,28 +172,26 @@ fn msg_span_from_early_bound_and_free_regions(
|
|||
{
|
||||
sp = param.span;
|
||||
}
|
||||
(format!("the lifetime `{}` as defined on", name), sp)
|
||||
(format!("the lifetime `{}` as defined here", name), sp)
|
||||
}
|
||||
ty::ReFree(ref fr) => match fr.bound_region {
|
||||
ty::BrAnon(idx) => {
|
||||
if let Some((ty, _)) = find_anon_type(tcx, region, &fr.bound_region) {
|
||||
("the anonymous lifetime defined on".to_string(), ty.span)
|
||||
("the anonymous lifetime defined here".to_string(), ty.span)
|
||||
} else {
|
||||
(
|
||||
format!("the anonymous lifetime #{} defined on", idx + 1),
|
||||
format!("the anonymous lifetime #{} defined here", idx + 1),
|
||||
tcx.hir().span(node),
|
||||
)
|
||||
}
|
||||
}
|
||||
_ => (
|
||||
format!("the lifetime `{}` as defined on", region),
|
||||
format!("the lifetime `{}` as defined here", region),
|
||||
sm.guess_head_span(tcx.hir().span(node)),
|
||||
),
|
||||
},
|
||||
_ => bug!(),
|
||||
};
|
||||
let (msg, opt_span) = explain_span(tcx, tag, span);
|
||||
(format!("{} {}", prefix, msg), opt_span)
|
||||
}
|
||||
}
|
||||
|
||||
fn emit_msg_span(
|
||||
|
@ -219,44 +210,6 @@ fn emit_msg_span(
|
|||
}
|
||||
}
|
||||
|
||||
fn item_scope_tag(item: &hir::Item<'_>) -> &'static str {
|
||||
match item.kind {
|
||||
hir::ItemKind::Impl { .. } => "impl",
|
||||
hir::ItemKind::Struct(..) => "struct",
|
||||
hir::ItemKind::Union(..) => "union",
|
||||
hir::ItemKind::Enum(..) => "enum",
|
||||
hir::ItemKind::Trait(..) => "trait",
|
||||
hir::ItemKind::Fn(..) => "function body",
|
||||
_ => "item",
|
||||
}
|
||||
}
|
||||
|
||||
fn trait_item_scope_tag(item: &hir::TraitItem<'_>) -> &'static str {
|
||||
match item.kind {
|
||||
hir::TraitItemKind::Fn(..) => "method body",
|
||||
hir::TraitItemKind::Const(..) | hir::TraitItemKind::Type(..) => "associated item",
|
||||
}
|
||||
}
|
||||
|
||||
fn impl_item_scope_tag(item: &hir::ImplItem<'_>) -> &'static str {
|
||||
match item.kind {
|
||||
hir::ImplItemKind::Fn(..) => "method body",
|
||||
hir::ImplItemKind::Const(..) | hir::ImplItemKind::TyAlias(..) => "associated item",
|
||||
}
|
||||
}
|
||||
|
||||
fn foreign_item_scope_tag(item: &hir::ForeignItem<'_>) -> &'static str {
|
||||
match item.kind {
|
||||
hir::ForeignItemKind::Fn(..) => "method body",
|
||||
hir::ForeignItemKind::Static(..) | hir::ForeignItemKind::Type => "associated item",
|
||||
}
|
||||
}
|
||||
|
||||
fn explain_span(tcx: TyCtxt<'tcx>, heading: &str, span: Span) -> (String, Option<Span>) {
|
||||
let lo = tcx.sess.source_map().lookup_char_pos(span.lo());
|
||||
(format!("the {} at {}:{}", heading, lo.line, lo.col.to_usize() + 1), Some(span))
|
||||
}
|
||||
|
||||
pub fn unexpected_hidden_region_diagnostic(
|
||||
tcx: TyCtxt<'tcx>,
|
||||
span: Span,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue