summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix S. Klock II <pnkfelix@pnkfx.org>2018-04-20 17:41:31 +0200
committerFelix S. Klock II <pnkfelix@pnkfx.org>2018-04-20 18:10:00 +0200
commitd141fdc3bfce5ab675a0c74b2fd6cf89ac4ef3f8 (patch)
tree125d6981205fb48744f95640e23a1d8dd14748b3
parentaaefa947ac507ff77049d27f927ddffe1b73cb18 (diff)
downloadrust-d141fdc3bfce5ab675a0c74b2fd6cf89ac4ef3f8.tar.gz
Revert "Stabilize the TryFrom and TryInto traits"
This reverts commit e53a2a72743810e05f58c61c9d8a4c89b712ad2e.
-rw-r--r--src/libcore/array.rs6
-rw-r--r--src/libcore/char/convert.rs6
-rw-r--r--src/libcore/char/mod.rs2
-rw-r--r--src/libcore/convert.rs12
-rw-r--r--src/libcore/num/mod.rs12
-rw-r--r--src/libcore/tests/lib.rs1
-rw-r--r--src/librustc_apfloat/lib.rs1
-rw-r--r--src/libstd/error.rs6
-rw-r--r--src/libstd/lib.rs1
-rw-r--r--src/test/ui/e0119/conflict-with-std.rs2
-rw-r--r--src/test/ui/e0119/conflict-with-std.stderr6
11 files changed, 28 insertions, 27 deletions
diff --git a/src/libcore/array.rs b/src/libcore/array.rs
index 87144c27c9e..3d24f8902bd 100644
--- a/src/libcore/array.rs
+++ b/src/libcore/array.rs
@@ -59,7 +59,7 @@ unsafe impl<T, A: Unsize<[T]>> FixedSizeArray<T> for A {
}
/// The error type returned when a conversion from a slice to an array fails.
-#[stable(feature = "try_from", since = "1.26.0")]
+#[unstable(feature = "try_from", issue = "33417")]
#[derive(Debug, Copy, Clone)]
pub struct TryFromSliceError(());
@@ -148,7 +148,7 @@ macro_rules! array_impls {
}
}
- #[stable(feature = "try_from", since = "1.26.0")]
+ #[unstable(feature = "try_from", issue = "33417")]
impl<'a, T> TryFrom<&'a [T]> for &'a [T; $N] {
type Error = TryFromSliceError;
@@ -162,7 +162,7 @@ macro_rules! array_impls {
}
}
- #[stable(feature = "try_from", since = "1.26.0")]
+ #[unstable(feature = "try_from", issue = "33417")]
impl<'a, T> TryFrom<&'a mut [T]> for &'a mut [T; $N] {
type Error = TryFromSliceError;
diff --git a/src/libcore/char/convert.rs b/src/libcore/char/convert.rs
index 150562a4a9b..803a924eb3a 100644
--- a/src/libcore/char/convert.rs
+++ b/src/libcore/char/convert.rs
@@ -204,7 +204,7 @@ impl FromStr for char {
}
-#[stable(feature = "try_from", since = "1.26.0")]
+#[unstable(feature = "try_from", issue = "33417")]
impl TryFrom<u32> for char {
type Error = CharTryFromError;
@@ -219,11 +219,11 @@ impl TryFrom<u32> for char {
}
/// The error type returned when a conversion from u32 to char fails.
-#[stable(feature = "try_from", since = "1.26.0")]
+#[unstable(feature = "try_from", issue = "33417")]
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub struct CharTryFromError(());
-#[stable(feature = "try_from", since = "1.26.0")]
+#[unstable(feature = "try_from", issue = "33417")]
impl fmt::Display for CharTryFromError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
"converted integer out of range for `char`".fmt(f)
diff --git a/src/libcore/char/mod.rs b/src/libcore/char/mod.rs
index 9edc0c88756..210eceebc51 100644
--- a/src/libcore/char/mod.rs
+++ b/src/libcore/char/mod.rs
@@ -40,7 +40,7 @@ pub use self::convert::{from_u32, from_digit};
pub use self::convert::from_u32_unchecked;
#[stable(feature = "char_from_str", since = "1.20.0")]
pub use self::convert::ParseCharError;
-#[stable(feature = "try_from", since = "1.26.0")]
+#[unstable(feature = "try_from", issue = "33417")]
pub use self::convert::CharTryFromError;
#[stable(feature = "decode_utf16", since = "1.9.0")]
pub use self::decode::{decode_utf16, DecodeUtf16, DecodeUtf16Error};
diff --git a/src/libcore/convert.rs b/src/libcore/convert.rs
index 63721395784..7324df95bc5 100644
--- a/src/libcore/convert.rs
+++ b/src/libcore/convert.rs
@@ -322,26 +322,22 @@ pub trait From<T>: Sized {
///
/// [`TryFrom`]: trait.TryFrom.html
/// [`Into`]: trait.Into.html
-#[stable(feature = "try_from", since = "1.26.0")]
+#[unstable(feature = "try_from", issue = "33417")]
pub trait TryInto<T>: Sized {
/// The type returned in the event of a conversion error.
- #[stable(feature = "try_from", since = "1.26.0")]
type Error;
/// Performs the conversion.
- #[stable(feature = "try_from", since = "1.26.0")]
fn try_into(self) -> Result<T, Self::Error>;
}
/// Attempt to construct `Self` via a conversion.
-#[stable(feature = "try_from", since = "1.26.0")]
+#[unstable(feature = "try_from", issue = "33417")]
pub trait TryFrom<T>: Sized {
/// The type returned in the event of a conversion error.
- #[stable(feature = "try_from", since = "1.26.0")]
type Error;
/// Performs the conversion.
- #[stable(feature = "try_from", since = "1.26.0")]
fn try_from(value: T) -> Result<Self, Self::Error>;
}
@@ -409,7 +405,7 @@ impl<T> From<T> for T {
// TryFrom implies TryInto
-#[stable(feature = "try_from", since = "1.26.0")]
+#[unstable(feature = "try_from", issue = "33417")]
impl<T, U> TryInto<U> for T where U: TryFrom<T>
{
type Error = U::Error;
@@ -421,7 +417,7 @@ impl<T, U> TryInto<U> for T where U: TryFrom<T>
// Infallible conversions are semantically equivalent to fallible conversions
// with an uninhabited error type.
-#[stable(feature = "try_from", since = "1.26.0")]
+#[unstable(feature = "try_from", issue = "33417")]
impl<T, U> TryFrom<U> for T where T: From<U> {
type Error = !;
diff --git a/src/libcore/num/mod.rs b/src/libcore/num/mod.rs
index f2e8caaad14..801e2328a4b 100644
--- a/src/libcore/num/mod.rs
+++ b/src/libcore/num/mod.rs
@@ -4192,7 +4192,7 @@ macro_rules! from_str_radix_int_impl {
from_str_radix_int_impl! { isize i8 i16 i32 i64 i128 usize u8 u16 u32 u64 u128 }
/// The error type returned when a checked integral type conversion fails.
-#[stable(feature = "try_from", since = "1.26.0")]
+#[unstable(feature = "try_from", issue = "33417")]
#[derive(Debug, Copy, Clone)]
pub struct TryFromIntError(());
@@ -4207,14 +4207,14 @@ impl TryFromIntError {
}
}
-#[stable(feature = "try_from", since = "1.26.0")]
+#[unstable(feature = "try_from", issue = "33417")]
impl fmt::Display for TryFromIntError {
fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
self.__description().fmt(fmt)
}
}
-#[stable(feature = "try_from", since = "1.26.0")]
+#[unstable(feature = "try_from", issue = "33417")]
impl From<!> for TryFromIntError {
fn from(never: !) -> TryFromIntError {
never
@@ -4224,7 +4224,7 @@ impl From<!> for TryFromIntError {
// only negative bounds
macro_rules! try_from_lower_bounded {
($source:ty, $($target:ty),*) => {$(
- #[stable(feature = "try_from", since = "1.26.0")]
+ #[unstable(feature = "try_from", issue = "33417")]
impl TryFrom<$source> for $target {
type Error = TryFromIntError;
@@ -4243,7 +4243,7 @@ macro_rules! try_from_lower_bounded {
// unsigned to signed (only positive bound)
macro_rules! try_from_upper_bounded {
($source:ty, $($target:ty),*) => {$(
- #[stable(feature = "try_from", since = "1.26.0")]
+ #[unstable(feature = "try_from", issue = "33417")]
impl TryFrom<$source> for $target {
type Error = TryFromIntError;
@@ -4262,7 +4262,7 @@ macro_rules! try_from_upper_bounded {
// all other cases
macro_rules! try_from_both_bounded {
($source:ty, $($target:ty),*) => {$(
- #[stable(feature = "try_from", since = "1.26.0")]
+ #[unstable(feature = "try_from", issue = "33417")]
impl TryFrom<$source> for $target {
type Error = TryFromIntError;
diff --git a/src/libcore/tests/lib.rs b/src/libcore/tests/lib.rs
index bb875c7219a..3b080689cb3 100644
--- a/src/libcore/tests/lib.rs
+++ b/src/libcore/tests/lib.rs
@@ -36,6 +36,7 @@
#![feature(str_internals)]
#![feature(test)]
#![feature(trusted_len)]
+#![feature(try_from)]
#![feature(try_trait)]
#![feature(exact_chunks)]
#![cfg_attr(stage0, feature(atomic_nand))]
diff --git a/src/librustc_apfloat/lib.rs b/src/librustc_apfloat/lib.rs
index 0f051ea5981..08438805a70 100644
--- a/src/librustc_apfloat/lib.rs
+++ b/src/librustc_apfloat/lib.rs
@@ -45,6 +45,7 @@
html_root_url = "https://doc.rust-lang.org/nightly/")]
#![forbid(unsafe_code)]
+#![feature(try_from)]
// See librustc_cratesio_shim/Cargo.toml for a comment explaining this.
#[allow(unused_extern_crates)]
extern crate rustc_cratesio_shim;
diff --git a/src/libstd/error.rs b/src/libstd/error.rs
index 6c149b2e0f1..749b8ccc13d 100644
--- a/src/libstd/error.rs
+++ b/src/libstd/error.rs
@@ -284,14 +284,14 @@ impl Error for num::ParseIntError {
}
}
-#[stable(feature = "try_from", since = "1.26.0")]
+#[unstable(feature = "try_from", issue = "33417")]
impl Error for num::TryFromIntError {
fn description(&self) -> &str {
self.__description()
}
}
-#[stable(feature = "try_from", since = "1.26.0")]
+#[unstable(feature = "try_from", issue = "33417")]
impl Error for array::TryFromSliceError {
fn description(&self) -> &str {
self.__description()
@@ -365,7 +365,7 @@ impl Error for cell::BorrowMutError {
}
}
-#[stable(feature = "try_from", since = "1.26.0")]
+#[unstable(feature = "try_from", issue = "33417")]
impl Error for char::CharTryFromError {
fn description(&self) -> &str {
"converted integer out of range for `char`"
diff --git a/src/libstd/lib.rs b/src/libstd/lib.rs
index 8980cd8c6a4..e53e009678c 100644
--- a/src/libstd/lib.rs
+++ b/src/libstd/lib.rs
@@ -307,6 +307,7 @@
#![feature(test, rustc_private)]
#![feature(thread_local)]
#![feature(toowned_clone_into)]
+#![feature(try_from)]
#![feature(try_reserve)]
#![feature(unboxed_closures)]
#![feature(untagged_unions)]
diff --git a/src/test/ui/e0119/conflict-with-std.rs b/src/test/ui/e0119/conflict-with-std.rs
index a9f747d09ec..ed9033ad53d 100644
--- a/src/test/ui/e0119/conflict-with-std.rs
+++ b/src/test/ui/e0119/conflict-with-std.rs
@@ -8,6 +8,8 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
+#![feature(try_from)]
+
use std::marker::PhantomData;
use std::convert::{TryFrom, AsRef};
diff --git a/src/test/ui/e0119/conflict-with-std.stderr b/src/test/ui/e0119/conflict-with-std.stderr
index 417ff1de3f8..e8b2c84c0df 100644
--- a/src/test/ui/e0119/conflict-with-std.stderr
+++ b/src/test/ui/e0119/conflict-with-std.stderr
@@ -1,5 +1,5 @@
error[E0119]: conflicting implementations of trait `std::convert::AsRef<Q>` for type `std::boxed::Box<Q>`:
- --> $DIR/conflict-with-std.rs:15:1
+ --> $DIR/conflict-with-std.rs:17:1
|
LL | impl AsRef<Q> for Box<Q> { //~ ERROR conflicting implementations
| ^^^^^^^^^^^^^^^^^^^^^^^^
@@ -9,7 +9,7 @@ LL | impl AsRef<Q> for Box<Q> { //~ ERROR conflicting implementations
where T: ?Sized;
error[E0119]: conflicting implementations of trait `std::convert::From<S>` for type `S`:
- --> $DIR/conflict-with-std.rs:22:1
+ --> $DIR/conflict-with-std.rs:24:1
|
LL | impl From<S> for S { //~ ERROR conflicting implementations
| ^^^^^^^^^^^^^^^^^^
@@ -18,7 +18,7 @@ LL | impl From<S> for S { //~ ERROR conflicting implementations
- impl<T> std::convert::From<T> for T;
error[E0119]: conflicting implementations of trait `std::convert::TryFrom<X>` for type `X`:
- --> $DIR/conflict-with-std.rs:29:1
+ --> $DIR/conflict-with-std.rs:31:1
|
LL | impl TryFrom<X> for X { //~ ERROR conflicting implementations
| ^^^^^^^^^^^^^^^^^^^^^