diff options
| author | Dan Aloni <alonid@gmail.com> | 2020-09-03 14:33:55 +0300 |
|---|---|---|
| committer | Dan Aloni <alonid@gmail.com> | 2020-09-03 14:36:58 +0300 |
| commit | e7d7615105332f269a27cbd7273029377a96ccdf (patch) | |
| tree | b68f56ef8fb90fa2d24c5c00fb75384d7f0f0e33 | |
| parent | 51742be6d8c828c956f662a8e9a472cd31886b4a (diff) | |
| download | rust-e7d7615105332f269a27cbd7273029377a96ccdf.tar.gz rust-e7d7615105332f269a27cbd7273029377a96ccdf.zip | |
rustc_lint: avoid trimmed paths for ty_find_init_error
| -rw-r--r-- | compiler/rustc_lint/src/builtin.rs | 5 | ||||
| -rw-r--r-- | src/test/ui/lint/uninitialized-zeroed.stderr | 10 |
2 files changed, 9 insertions, 6 deletions
diff --git a/compiler/rustc_lint/src/builtin.rs b/compiler/rustc_lint/src/builtin.rs index ea624b9ed30..2b14d09671e 100644 --- a/compiler/rustc_lint/src/builtin.rs +++ b/compiler/rustc_lint/src/builtin.rs @@ -40,6 +40,7 @@ use rustc_hir::{ForeignItemKind, GenericParamKind, PatKind}; use rustc_hir::{HirId, HirIdSet, Node}; use rustc_index::vec::Idx; use rustc_middle::lint::LintDiagnosticBuilder; +use rustc_middle::ty::print::with_no_trimmed_paths; use rustc_middle::ty::subst::{GenericArgKind, Subst}; use rustc_middle::ty::{self, layout::LayoutError, Ty, TyCtxt}; use rustc_session::lint::FutureIncompatibleInfo; @@ -2040,7 +2041,9 @@ impl<'tcx> LateLintPass<'tcx> for InvalidValue { // using zeroed or uninitialized memory. // We are extremely conservative with what we warn about. let conjured_ty = cx.typeck_results().expr_ty(expr); - if let Some((msg, span)) = ty_find_init_error(cx.tcx, conjured_ty, init) { + if let Some((msg, span)) = + with_no_trimmed_paths(|| ty_find_init_error(cx.tcx, conjured_ty, init)) + { cx.struct_span_lint(INVALID_VALUE, expr.span, |lint| { let mut err = lint.build(&format!( "the type `{}` does not permit {}", diff --git a/src/test/ui/lint/uninitialized-zeroed.stderr b/src/test/ui/lint/uninitialized-zeroed.stderr index 715c5d0704e..de1b6c76176 100644 --- a/src/test/ui/lint/uninitialized-zeroed.stderr +++ b/src/test/ui/lint/uninitialized-zeroed.stderr @@ -294,7 +294,7 @@ LL | let _val: NonNull<i32> = mem::zeroed(); | this code causes undefined behavior when executed | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done | - = note: `NonNull<i32>` must be non-null + = note: `std::ptr::NonNull<i32>` must be non-null error: the type `NonNull<i32>` does not permit being left uninitialized --> $DIR/uninitialized-zeroed.rs:80:34 @@ -305,7 +305,7 @@ LL | let _val: NonNull<i32> = mem::uninitialized(); | this code causes undefined behavior when executed | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done | - = note: `NonNull<i32>` must be non-null + = note: `std::ptr::NonNull<i32>` must be non-null error: the type `*const dyn Send` does not permit zero-initialization --> $DIR/uninitialized-zeroed.rs:82:37 @@ -415,7 +415,7 @@ LL | let _val: NonZeroU32 = mem::transmute(0); | this code causes undefined behavior when executed | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done | - = note: `NonZeroU32` must be non-null + = note: `std::num::NonZeroU32` must be non-null error: the type `NonNull<i32>` does not permit zero-initialization --> $DIR/uninitialized-zeroed.rs:104:34 @@ -426,7 +426,7 @@ LL | let _val: NonNull<i32> = MaybeUninit::zeroed().assume_init(); | this code causes undefined behavior when executed | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done | - = note: `NonNull<i32>` must be non-null + = note: `std::ptr::NonNull<i32>` must be non-null error: the type `NonNull<i32>` does not permit being left uninitialized --> $DIR/uninitialized-zeroed.rs:105:34 @@ -437,7 +437,7 @@ LL | let _val: NonNull<i32> = MaybeUninit::uninit().assume_init(); | this code causes undefined behavior when executed | help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done | - = note: `NonNull<i32>` must be non-null + = note: `std::ptr::NonNull<i32>` must be non-null error: the type `bool` does not permit being left uninitialized --> $DIR/uninitialized-zeroed.rs:106:26 |
