Rework "long type names" printing logic
Make it so more type-system types can be printed in a shortened version (like `Predicate`s). Centralize printing the information about the "full type name path". Make the "long type path" for the file where long types are written part of `Diag`, so that it becomes easier to keep track of it, and ensure it will always will be printed out last in the diagnostic by making its addition to the output implicit. Tweak the shortening of types in "expected/found" labels. Remove dead file `note.rs`.
This commit is contained in:
parent
7f36543a48
commit
0751e9036a
43 changed files with 332 additions and 741 deletions
|
@ -25,8 +25,6 @@ mir_build_borrow_of_moved_value = borrow of moved value
|
|||
.occurs_because_label = move occurs because `{$name}` has type `{$ty}`, which does not implement the `Copy` trait
|
||||
.value_borrowed_label = value borrowed here after move
|
||||
.suggestion = borrow this binding in the pattern to avoid moving the value
|
||||
.full_type_name = the full type name has been written to '{$path}'
|
||||
.consider_verbose = consider using `--verbose` to print the full type name to the console
|
||||
|
||||
mir_build_call_to_deprecated_safe_fn_requires_unsafe =
|
||||
call to deprecated safe function `{$function}` is unsafe and requires unsafe block
|
||||
|
|
|
@ -801,10 +801,6 @@ pub(crate) struct BorrowOfMovedValue {
|
|||
pub(crate) ty: String,
|
||||
#[suggestion(code = "ref ", applicability = "machine-applicable")]
|
||||
pub(crate) suggest_borrowing: Option<Span>,
|
||||
#[note(mir_build_full_type_name)]
|
||||
#[note(mir_build_consider_verbose)]
|
||||
pub(crate) has_path: bool,
|
||||
pub(crate) path: String,
|
||||
}
|
||||
|
||||
#[derive(Diagnostic)]
|
||||
|
|
|
@ -796,16 +796,16 @@ fn check_borrow_conflicts_in_at_patterns<'tcx>(cx: &MatchVisitor<'_, 'tcx>, pat:
|
|||
});
|
||||
if !conflicts_ref.is_empty() {
|
||||
let mut path = None;
|
||||
let ty = cx.tcx.short_ty_string(ty, &mut path);
|
||||
sess.dcx().emit_err(BorrowOfMovedValue {
|
||||
let ty = cx.tcx.short_string(ty, &mut path);
|
||||
let mut err = sess.dcx().create_err(BorrowOfMovedValue {
|
||||
binding_span: pat.span,
|
||||
conflicts_ref,
|
||||
name: Ident::new(name, pat.span),
|
||||
ty,
|
||||
suggest_borrowing: Some(pat.span.shrink_to_lo()),
|
||||
has_path: path.is_some(),
|
||||
path: path.map(|p| p.display().to_string()).unwrap_or_default(),
|
||||
});
|
||||
*err.long_ty_path() = path;
|
||||
err.emit();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue