mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-27 18:57:42 +03:00
deny-by-default & report in deps uninhabited_static
This commit is contained in:
@@ -2718,12 +2718,13 @@
|
||||
///
|
||||
/// ### Example
|
||||
///
|
||||
/// ```rust
|
||||
#[cfg_attr(bootstrap, doc = "```rust")]
|
||||
#[cfg_attr(not(bootstrap), doc = "```rust,compile_fail")]
|
||||
/// enum Void {}
|
||||
/// unsafe extern {
|
||||
/// static EXTERN: Void;
|
||||
/// }
|
||||
/// ```
|
||||
#[doc = "```"]
|
||||
///
|
||||
/// {{produces}}
|
||||
///
|
||||
@@ -2734,10 +2735,11 @@
|
||||
/// compiler which assumes that there are no initialized uninhabited places (such as locals or
|
||||
/// statics). This was accidentally allowed, but is being phased out.
|
||||
pub UNINHABITED_STATIC,
|
||||
Warn,
|
||||
Deny,
|
||||
"uninhabited static",
|
||||
@future_incompatible = FutureIncompatibleInfo {
|
||||
reason: fcw!(FutureReleaseError #74840),
|
||||
report_in_deps: true,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#![feature(never_type)]
|
||||
#![deny(uninhabited_static)]
|
||||
|
||||
enum Void {}
|
||||
extern "C" {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error: static of uninhabited type
|
||||
--> $DIR/uninhabited-static.rs:12:1
|
||||
--> $DIR/uninhabited-static.rs:11:1
|
||||
|
|
||||
LL | static VOID2: Void = unsafe { std::mem::transmute(()) };
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
@@ -7,14 +7,10 @@ LL | static VOID2: Void = unsafe { std::mem::transmute(()) };
|
||||
= note: uninhabited statics cannot be initialized, and any access would be an immediate error
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
= note: for more information, see issue #74840 <https://github.com/rust-lang/rust/issues/74840>
|
||||
note: the lint level is defined here
|
||||
--> $DIR/uninhabited-static.rs:2:9
|
||||
|
|
||||
LL | #![deny(uninhabited_static)]
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
= note: `#[deny(uninhabited_static)]` (part of `#[deny(future_incompatible)]`) on by default
|
||||
|
||||
error: static of uninhabited type
|
||||
--> $DIR/uninhabited-static.rs:15:1
|
||||
--> $DIR/uninhabited-static.rs:14:1
|
||||
|
|
||||
LL | static NEVER2: Void = unsafe { std::mem::transmute(()) };
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
@@ -24,7 +20,7 @@ LL | static NEVER2: Void = unsafe { std::mem::transmute(()) };
|
||||
= note: for more information, see issue #74840 <https://github.com/rust-lang/rust/issues/74840>
|
||||
|
||||
error: static of uninhabited type
|
||||
--> $DIR/uninhabited-static.rs:6:5
|
||||
--> $DIR/uninhabited-static.rs:5:5
|
||||
|
|
||||
LL | static VOID: Void;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
@@ -34,7 +30,7 @@ LL | static VOID: Void;
|
||||
= note: for more information, see issue #74840 <https://github.com/rust-lang/rust/issues/74840>
|
||||
|
||||
error: static of uninhabited type
|
||||
--> $DIR/uninhabited-static.rs:8:5
|
||||
--> $DIR/uninhabited-static.rs:7:5
|
||||
|
|
||||
LL | static NEVER: !;
|
||||
| ^^^^^^^^^^^^^^^
|
||||
@@ -44,13 +40,13 @@ LL | static NEVER: !;
|
||||
= note: for more information, see issue #74840 <https://github.com/rust-lang/rust/issues/74840>
|
||||
|
||||
error[E0080]: constructing invalid value of type Void: encountered a value of uninhabited type `Void`
|
||||
--> $DIR/uninhabited-static.rs:12:31
|
||||
--> $DIR/uninhabited-static.rs:11:31
|
||||
|
|
||||
LL | static VOID2: Void = unsafe { std::mem::transmute(()) };
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^ evaluation of `VOID2` failed here
|
||||
|
||||
error[E0080]: constructing invalid value of type Void: encountered a value of uninhabited type `Void`
|
||||
--> $DIR/uninhabited-static.rs:15:32
|
||||
--> $DIR/uninhabited-static.rs:14:32
|
||||
|
|
||||
LL | static NEVER2: Void = unsafe { std::mem::transmute(()) };
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^ evaluation of `NEVER2` failed here
|
||||
@@ -58,3 +54,51 @@ LL | static NEVER2: Void = unsafe { std::mem::transmute(()) };
|
||||
error: aborting due to 6 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0080`.
|
||||
Future incompatibility report: Future breakage diagnostic:
|
||||
error: static of uninhabited type
|
||||
--> $DIR/uninhabited-static.rs:11:1
|
||||
|
|
||||
LL | static VOID2: Void = unsafe { std::mem::transmute(()) };
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: uninhabited statics cannot be initialized, and any access would be an immediate error
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
= note: for more information, see issue #74840 <https://github.com/rust-lang/rust/issues/74840>
|
||||
= note: `#[deny(uninhabited_static)]` (part of `#[deny(future_incompatible)]`) on by default
|
||||
|
||||
Future breakage diagnostic:
|
||||
error: static of uninhabited type
|
||||
--> $DIR/uninhabited-static.rs:14:1
|
||||
|
|
||||
LL | static NEVER2: Void = unsafe { std::mem::transmute(()) };
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: uninhabited statics cannot be initialized, and any access would be an immediate error
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
= note: for more information, see issue #74840 <https://github.com/rust-lang/rust/issues/74840>
|
||||
= note: `#[deny(uninhabited_static)]` (part of `#[deny(future_incompatible)]`) on by default
|
||||
|
||||
Future breakage diagnostic:
|
||||
error: static of uninhabited type
|
||||
--> $DIR/uninhabited-static.rs:5:5
|
||||
|
|
||||
LL | static VOID: Void;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: uninhabited statics cannot be initialized, and any access would be an immediate error
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
= note: for more information, see issue #74840 <https://github.com/rust-lang/rust/issues/74840>
|
||||
= note: `#[deny(uninhabited_static)]` (part of `#[deny(future_incompatible)]`) on by default
|
||||
|
||||
Future breakage diagnostic:
|
||||
error: static of uninhabited type
|
||||
--> $DIR/uninhabited-static.rs:7:5
|
||||
|
|
||||
LL | static NEVER: !;
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: uninhabited statics cannot be initialized, and any access would be an immediate error
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
= note: for more information, see issue #74840 <https://github.com/rust-lang/rust/issues/74840>
|
||||
= note: `#[deny(uninhabited_static)]` (part of `#[deny(future_incompatible)]`) on by default
|
||||
|
||||
|
||||
Reference in New Issue
Block a user