From 6e2119e4b7f51f0b58de17e1a096037c2e850259 Mon Sep 17 00:00:00 2001
From: Andre Bogus <bogusandre@gmail.com>
Date: Thu, 13 Dec 2018 22:01:59 +0100
Subject: [PATCH] Stabilize termination_trait_lib

---
 src/libstd/process.rs                               | 13 +++++++------
 src/libtest/lib.rs                                  |  1 -
 .../termination-trait-for-impl-termination.rs       |  1 -
 3 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/src/libstd/process.rs b/src/libstd/process.rs
index b42ad29034c8..4d612af80010 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 1c8734913c72..5fb594e302f6 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 6c3f2fe4ea5c..2153c767e209 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 { }