Skip to content

Commit

Permalink
Remove RustcEncodable/Decodable from 2024 prelude
Browse files Browse the repository at this point in the history
  • Loading branch information
jhpratt committed Sep 21, 2023
1 parent 34b5e3c commit 3eee780
Show file tree
Hide file tree
Showing 6 changed files with 111 additions and 35 deletions.
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
//! The first version of the core prelude.
//! Items common to the prelude of all editions.
//!
//! See the [module-level documentation](super) for more.

#![stable(feature = "core_prelude", since = "1.4.0")]

// Re-exported core operators
#[stable(feature = "core_prelude", since = "1.4.0")]
#[doc(no_inline)]
Expand Down Expand Up @@ -68,16 +66,6 @@ pub use crate::{
#[doc(no_inline)]
pub use crate::concat_bytes;

// Do not `doc(inline)` these `doc(hidden)` items.
#[unstable(
feature = "rustc_encodable_decodable",
issue = "none",
soft,
reason = "unstable implementation detail of the `rustc` compiler, do not use"
)]
#[allow(deprecated)]
pub use crate::macros::builtin::{RustcDecodable, RustcEncodable};

// Do not `doc(no_inline)` so that they become doc items on their own
// (no public module for them to be re-exported from).
#[stable(feature = "builtin_macro_prelude", since = "1.38.0")]
Expand Down
30 changes: 26 additions & 4 deletions library/core/src/prelude/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,26 @@

#![stable(feature = "core_prelude", since = "1.4.0")]

pub mod v1;
mod common;

/// The first version of the prelude of The Rust Standard Library.
///
/// See the [module-level documentation](self) for more.
#[stable(feature = "rust1", since = "1.0.0")]
pub mod v1 {
#[stable(feature = "rust1", since = "1.0.0")]
pub use super::common::*;

// Do not `doc(inline)` these `doc(hidden)` items.
#[unstable(
feature = "rustc_encodable_decodable",
issue = "none",
soft,
reason = "unstable implementation detail of the `rustc` compiler, do not use"
)]
#[allow(deprecated)]
pub use crate::macros::builtin::{RustcDecodable, RustcEncodable};
}

/// The 2015 version of the core prelude.
///
Expand Down Expand Up @@ -46,12 +65,15 @@ pub mod rust_2021 {
pub use crate::convert::{TryFrom, TryInto};
}

/// The 2024 edition of the core prelude.
/// The 2024 version of the core prelude.
///
/// See the [module-level documentation](self) for more.
#[unstable(feature = "prelude_2024", issue = "none")]
pub mod rust_2024 {
#[unstable(feature = "prelude_2024", issue = "none")]
#[stable(feature = "rust1", since = "1.0.0")]
pub use super::common::*;

#[stable(feature = "prelude_2021", since = "1.55.0")]
#[doc(no_inline)]
pub use super::rust_2021::*;
pub use crate::convert::{TryFrom, TryInto};
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
//! The first version of the prelude of The Rust Standard Library.
//! Items common to the prelude of all editions.
//!
//! See the [module-level documentation](super) for more.

#![stable(feature = "rust1", since = "1.0.0")]

// Re-exported core operators
#[stable(feature = "rust1", since = "1.0.0")]
#[doc(no_inline)]
Expand Down Expand Up @@ -52,16 +50,6 @@ pub use core::prelude::v1::{
#[doc(no_inline)]
pub use core::prelude::v1::concat_bytes;

// Do not `doc(inline)` these `doc(hidden)` items.
#[unstable(
feature = "rustc_encodable_decodable",
issue = "none",
soft,
reason = "unstable implementation detail of the `rustc` compiler, do not use"
)]
#[allow(deprecated)]
pub use core::prelude::v1::{RustcDecodable, RustcEncodable};

// Do not `doc(no_inline)` so that they become doc items on their own
// (no public module for them to be re-exported from).
#[stable(feature = "builtin_macro_prelude", since = "1.38.0")]
Expand Down
28 changes: 23 additions & 5 deletions library/std/src/prelude/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,26 @@

#![stable(feature = "rust1", since = "1.0.0")]

pub mod v1;
mod common;

/// The first version of the prelude of The Rust Standard Library.
///
/// See the [module-level documentation](self) for more.
#[stable(feature = "rust1", since = "1.0.0")]
pub mod v1 {
#[stable(feature = "rust1", since = "1.0.0")]
pub use super::common::*;

// Do not `doc(inline)` these `doc(hidden)` items.
#[unstable(
feature = "rustc_encodable_decodable",
issue = "none",
soft,
reason = "unstable implementation detail of the `rustc` compiler, do not use"
)]
#[allow(deprecated)]
pub use core::prelude::v1::{RustcDecodable, RustcEncodable};
}

/// The 2015 version of the prelude of The Rust Standard Library.
///
Expand Down Expand Up @@ -134,11 +153,10 @@ pub mod rust_2021 {
/// See the [module-level documentation](self) for more.
#[unstable(feature = "prelude_2024", issue = "none")]
pub mod rust_2024 {
#[unstable(feature = "prelude_2024", issue = "none")]
#[doc(no_inline)]
pub use super::v1::*;
#[stable(feature = "rust1", since = "1.0.0")]
pub use super::common::*;

#[unstable(feature = "prelude_2024", issue = "none")]
#[stable(feature = "prelude_2021", since = "1.55.0")]
#[doc(no_inline)]
pub use core::prelude::rust_2024::*;
}
16 changes: 16 additions & 0 deletions tests/ui/feature-gates/feature-gate-rustc_encodable_decodable.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#![crate_type = "lib"]

// This isn't intended to compile, so it's easiest to just ignore this error.
extern crate rustc_serialize; //~ERROR can't find crate for `rustc_serialize`

#[derive(
RustcEncodable,
//~^ ERROR use of unstable library feature 'rustc_encodable_decodable'
//~^^ WARNING this was previously accepted by the compiler
//~^^^ WARNING use of deprecated macro `RustcEncodable`
RustcDecodable,
//~^ ERROR use of unstable library feature 'rustc_encodable_decodable'
//~^^ WARNING this was previously accepted by the compiler
//~^^^ WARNING use of deprecated macro `RustcDecodable`
)]
struct S;
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
error[E0463]: can't find crate for `rustc_serialize`
--> $DIR/feature-gate-rustc_encodable_decodable.rs:4:1
|
LL | extern crate rustc_serialize;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
|
= help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error: use of unstable library feature 'rustc_encodable_decodable': derive macro for `rustc-serialize`; should not be used in new code
--> $DIR/feature-gate-rustc_encodable_decodable.rs:7:5
|
LL | RustcEncodable,
| ^^^^^^^^^^^^^^
|
= 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 #64266 <https://github.com/rust-lang/rust/issues/64266>
= note: `#[deny(soft_unstable)]` on by default

warning: use of deprecated macro `RustcEncodable`: rustc-serialize is deprecated and no longer supported
--> $DIR/feature-gate-rustc_encodable_decodable.rs:7:5
|
LL | RustcEncodable,
| ^^^^^^^^^^^^^^
|
= note: `#[warn(deprecated)]` on by default

error: use of unstable library feature 'rustc_encodable_decodable': derive macro for `rustc-serialize`; should not be used in new code
--> $DIR/feature-gate-rustc_encodable_decodable.rs:11:5
|
LL | RustcDecodable,
| ^^^^^^^^^^^^^^
|
= 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 #64266 <https://github.com/rust-lang/rust/issues/64266>

warning: use of deprecated macro `RustcDecodable`: rustc-serialize is deprecated and no longer supported
--> $DIR/feature-gate-rustc_encodable_decodable.rs:11:5
|
LL | RustcDecodable,
| ^^^^^^^^^^^^^^

error: aborting due to 3 previous errors; 2 warnings emitted

For more information about this error, try `rustc --explain E0463`.

0 comments on commit 3eee780

Please sign in to comment.