invalid_value lint: fix help text

This commit is contained in:
Ralf Jung 2019-11-07 10:22:50 +01:00
parent 7a76fe76f7
commit a5be03654c
2 changed files with 37 additions and 36 deletions

View file

@ -2052,7 +2052,8 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for InvalidValue {
);
err.span_label(expr.span,
"this code causes undefined behavior when executed");
err.span_label(expr.span, "help: use `MaybeUninit<T>` instead");
err.span_label(expr.span, "help: use `MaybeUninit<T>` instead, \
and only call `assume_init` after initialization is done");
if let Some(span) = span {
err.span_note(span, &msg);
} else {

View file

@ -5,7 +5,7 @@ LL | let _val: &'static T = mem::zeroed();
| ^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
note: lint level defined here
--> $DIR/uninitialized-zeroed.rs:7:9
@ -21,7 +21,7 @@ LL | let _val: &'static T = mem::uninitialized();
| ^^^^^^^^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: References must be non-null
@ -32,7 +32,7 @@ LL | let _val: Wrap<&'static T> = mem::zeroed();
| ^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
note: References must be non-null (in this struct field)
--> $DIR/uninitialized-zeroed.rs:18:18
@ -47,7 +47,7 @@ LL | let _val: Wrap<&'static T> = mem::uninitialized();
| ^^^^^^^^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
note: References must be non-null (in this struct field)
--> $DIR/uninitialized-zeroed.rs:18:18
@ -62,7 +62,7 @@ LL | let _val: ! = mem::zeroed();
| ^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: The never type (`!`) has no valid value
@ -73,7 +73,7 @@ LL | let _val: ! = mem::uninitialized();
| ^^^^^^^^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: The never type (`!`) has no valid value
@ -84,7 +84,7 @@ LL | let _val: (i32, !) = mem::zeroed();
| ^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: The never type (`!`) has no valid value
@ -95,7 +95,7 @@ LL | let _val: (i32, !) = mem::uninitialized();
| ^^^^^^^^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: The never type (`!`) has no valid value
@ -106,7 +106,7 @@ LL | let _val: Void = mem::zeroed();
| ^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: 0-variant enums have no valid value
@ -117,7 +117,7 @@ LL | let _val: Void = mem::uninitialized();
| ^^^^^^^^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: 0-variant enums have no valid value
@ -128,7 +128,7 @@ LL | let _val: &'static i32 = mem::zeroed();
| ^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: References must be non-null
@ -139,7 +139,7 @@ LL | let _val: &'static i32 = mem::uninitialized();
| ^^^^^^^^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: References must be non-null
@ -150,7 +150,7 @@ LL | let _val: Ref = mem::zeroed();
| ^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
note: References must be non-null (in this struct field)
--> $DIR/uninitialized-zeroed.rs:15:12
@ -165,7 +165,7 @@ LL | let _val: Ref = mem::uninitialized();
| ^^^^^^^^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
note: References must be non-null (in this struct field)
--> $DIR/uninitialized-zeroed.rs:15:12
@ -180,7 +180,7 @@ LL | let _val: fn() = mem::zeroed();
| ^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: Function pointers must be non-null
@ -191,7 +191,7 @@ LL | let _val: fn() = mem::uninitialized();
| ^^^^^^^^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: Function pointers must be non-null
@ -202,7 +202,7 @@ LL | let _val: Wrap<fn()> = mem::zeroed();
| ^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
note: Function pointers must be non-null (in this struct field)
--> $DIR/uninitialized-zeroed.rs:18:18
@ -217,7 +217,7 @@ LL | let _val: Wrap<fn()> = mem::uninitialized();
| ^^^^^^^^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
note: Function pointers must be non-null (in this struct field)
--> $DIR/uninitialized-zeroed.rs:18:18
@ -232,7 +232,7 @@ LL | let _val: WrapEnum<fn()> = mem::zeroed();
| ^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
note: Function pointers must be non-null (in this enum field)
--> $DIR/uninitialized-zeroed.rs:19:28
@ -247,7 +247,7 @@ LL | let _val: WrapEnum<fn()> = mem::uninitialized();
| ^^^^^^^^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
note: Function pointers must be non-null (in this enum field)
--> $DIR/uninitialized-zeroed.rs:19:28
@ -262,7 +262,7 @@ LL | let _val: Wrap<(RefPair, i32)> = mem::zeroed();
| ^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
note: References must be non-null (in this struct field)
--> $DIR/uninitialized-zeroed.rs:16:16
@ -277,7 +277,7 @@ LL | let _val: Wrap<(RefPair, i32)> = mem::uninitialized();
| ^^^^^^^^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
note: References must be non-null (in this struct field)
--> $DIR/uninitialized-zeroed.rs:16:16
@ -292,7 +292,7 @@ LL | let _val: NonNull<i32> = mem::zeroed();
| ^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: std::ptr::NonNull<i32> must be non-null
@ -303,7 +303,7 @@ LL | let _val: NonNull<i32> = mem::uninitialized();
| ^^^^^^^^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: std::ptr::NonNull<i32> must be non-null
@ -314,7 +314,7 @@ LL | let _val: *const dyn Send = mem::zeroed();
| ^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: The vtable of a wide raw pointer must be non-null
@ -325,7 +325,7 @@ LL | let _val: *const dyn Send = mem::uninitialized();
| ^^^^^^^^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: The vtable of a wide raw pointer must be non-null
@ -336,7 +336,7 @@ LL | let _val: bool = mem::uninitialized();
| ^^^^^^^^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: Booleans must be `true` or `false`
@ -347,7 +347,7 @@ LL | let _val: Wrap<char> = mem::uninitialized();
| ^^^^^^^^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
note: Characters must be a valid unicode codepoint (in this struct field)
--> $DIR/uninitialized-zeroed.rs:18:18
@ -362,7 +362,7 @@ LL | let _val: NonBig = mem::uninitialized();
| ^^^^^^^^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: NonBig must be initialized inside its custom valid range
@ -373,7 +373,7 @@ LL | let _val: &'static i32 = mem::transmute(0usize);
| ^^^^^^^^^^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: References must be non-null
@ -384,7 +384,7 @@ LL | let _val: &'static [i32] = mem::transmute((0usize, 0usize));
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: References must be non-null
@ -395,7 +395,7 @@ LL | let _val: NonZeroU32 = mem::transmute(0);
| ^^^^^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: std::num::NonZeroU32 must be non-null
@ -406,7 +406,7 @@ LL | let _val: NonNull<i32> = MaybeUninit::zeroed().assume_init();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: std::ptr::NonNull<i32> must be non-null
@ -417,7 +417,7 @@ LL | let _val: NonNull<i32> = MaybeUninit::uninit().assume_init();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: std::ptr::NonNull<i32> must be non-null
@ -428,7 +428,7 @@ LL | let _val: bool = MaybeUninit::uninit().assume_init();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
| |
| this code causes undefined behavior when executed
| help: use `MaybeUninit<T>` instead
| help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
|
= note: Booleans must be `true` or `false`