diff --git a/src/libstd/process.rs b/src/libstd/process.rs index b42ad29034c88..4d612af80010d 100644 --- a/src/libstd/process.rs +++ b/src/libstd/process.rs @@ -1583,23 +1583,24 @@ pub fn id() -> u32 { /// The default implementations are returning `libc::EXIT_SUCCESS` to indicate /// a successful execution. In case of a failure, `libc::EXIT_FAILURE` is returned. #[cfg_attr(not(test), lang = "termination")] -#[unstable(feature = "termination_trait_lib", issue = "43301")] +#[stable(feature = "termination_trait_lib", since = "1.33.0")] #[rustc_on_unimplemented( message="`main` has invalid return type `{Self}`", label="`main` can only return types that implement `{Termination}`")] pub trait Termination { /// Is called to get the representation of the value as status code. /// This status code is returned to the operating system. + #[stable(feature = "termination_trait_lib", since = "1.33.0")] fn report(self) -> i32; } -#[unstable(feature = "termination_trait_lib", issue = "43301")] +#[stable(feature = "termination_trait_lib", since = "1.33.0")] impl Termination for () { #[inline] fn report(self) -> i32 { ExitCode::SUCCESS.report() } } -#[unstable(feature = "termination_trait_lib", issue = "43301")] +#[stable(feature = "termination_trait_lib", since = "1.33.0")] impl<E: fmt::Debug> Termination for Result<(), E> { fn report(self) -> i32 { match self { @@ -1609,12 +1610,12 @@ impl<E: fmt::Debug> Termination for Result<(), E> { } } -#[unstable(feature = "termination_trait_lib", issue = "43301")] +#[stable(feature = "termination_trait_lib", since = "1.33.0")] impl Termination for ! { fn report(self) -> i32 { self } } -#[unstable(feature = "termination_trait_lib", issue = "43301")] +#[stable(feature = "termination_trait_lib", since = "1.33.0")] impl<E: fmt::Debug> Termination for Result<!, E> { fn report(self) -> i32 { let Err(err) = self; @@ -1623,7 +1624,7 @@ impl<E: fmt::Debug> Termination for Result<!, E> { } } -#[unstable(feature = "termination_trait_lib", issue = "43301")] +#[stable(feature = "termination_trait_lib", since = "1.33.0")] impl Termination for ExitCode { #[inline] fn report(self) -> i32 { diff --git a/src/libtest/lib.rs b/src/libtest/lib.rs index 1c8734913c723..5fb594e302f6c 100644 --- a/src/libtest/lib.rs +++ b/src/libtest/lib.rs @@ -39,7 +39,6 @@ #![feature(set_stdio)] #![feature(panic_unwind)] #![feature(staged_api)] -#![feature(termination_trait_lib)] #![feature(test)] extern crate getopts; diff --git a/src/test/run-pass/rfcs/rfc-1937-termination-trait/termination-trait-for-impl-termination.rs b/src/test/run-pass/rfcs/rfc-1937-termination-trait/termination-trait-for-impl-termination.rs index 6c3f2fe4ea5c6..2153c767e2091 100644 --- a/src/test/run-pass/rfcs/rfc-1937-termination-trait/termination-trait-for-impl-termination.rs +++ b/src/test/run-pass/rfcs/rfc-1937-termination-trait/termination-trait-for-impl-termination.rs @@ -9,6 +9,5 @@ // except according to those terms. // run-pass -#![feature(termination_trait_lib)] fn main() -> impl std::process::Termination { }