forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rollup merge of rust-lang#67637 - Mark-Simulacrum:primitive-mod, r=dt…
…olnay Add primitive module to libcore This re-exports the primitive types from libcore at `core::primitive` to allow macro authors to have a reliable location to use them from. Fixes rust-lang#44865
- Loading branch information
Showing
5 changed files
with
97 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
//! This module reexports the primitive types to allow usage that is not | ||
//! possibly shadowed by other declared types. | ||
//! | ||
//! This is normally only useful in macro generated code. | ||
//! | ||
//! An example of this is when generating a new struct and an impl for it: | ||
//! | ||
//! ```rust,compile_fail | ||
//! pub struct bool; | ||
//! | ||
//! impl QueryId for bool { | ||
//! const SOME_PROPERTY: bool = true; | ||
//! } | ||
//! | ||
//! # trait QueryId { const SOME_PROPERTY: core::primitive::bool; } | ||
//! ``` | ||
//! | ||
//! Note that the `SOME_PROPERTY` associated constant would not compile, as its | ||
//! type `bool` refers to the struct, rather than to the primitive bool type. | ||
//! | ||
//! A correct implementation could look like: | ||
//! | ||
//! ```rust | ||
//! # #[allow(non_camel_case_types)] | ||
//! pub struct bool; | ||
//! | ||
//! impl QueryId for bool { | ||
//! const SOME_PROPERTY: core::primitive::bool = true; | ||
//! } | ||
//! | ||
//! # trait QueryId { const SOME_PROPERTY: core::primitive::bool; } | ||
//! ``` | ||
|
||
#[stable(feature = "core_primitive", since = "1.43.0")] | ||
pub use bool; | ||
#[stable(feature = "core_primitive", since = "1.43.0")] | ||
pub use char; | ||
#[stable(feature = "core_primitive", since = "1.43.0")] | ||
pub use f32; | ||
#[stable(feature = "core_primitive", since = "1.43.0")] | ||
pub use f64; | ||
#[stable(feature = "core_primitive", since = "1.43.0")] | ||
pub use i128; | ||
#[stable(feature = "core_primitive", since = "1.43.0")] | ||
pub use i16; | ||
#[stable(feature = "core_primitive", since = "1.43.0")] | ||
pub use i32; | ||
#[stable(feature = "core_primitive", since = "1.43.0")] | ||
pub use i64; | ||
#[stable(feature = "core_primitive", since = "1.43.0")] | ||
pub use i8; | ||
#[stable(feature = "core_primitive", since = "1.43.0")] | ||
pub use isize; | ||
#[stable(feature = "core_primitive", since = "1.43.0")] | ||
pub use str; | ||
#[stable(feature = "core_primitive", since = "1.43.0")] | ||
pub use u128; | ||
#[stable(feature = "core_primitive", since = "1.43.0")] | ||
pub use u16; | ||
#[stable(feature = "core_primitive", since = "1.43.0")] | ||
pub use u32; | ||
#[stable(feature = "core_primitive", since = "1.43.0")] | ||
pub use u64; | ||
#[stable(feature = "core_primitive", since = "1.43.0")] | ||
pub use u8; | ||
#[stable(feature = "core_primitive", since = "1.43.0")] | ||
pub use usize; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
// check-pass | ||
|
||
mod bar { | ||
pub trait QueryId { | ||
const SOME_PROPERTY: bool; | ||
} | ||
} | ||
|
||
use bar::QueryId; | ||
|
||
#[allow(non_camel_case_types)] | ||
pub struct bool; | ||
|
||
impl QueryId for bool { | ||
const SOME_PROPERTY: core::primitive::bool = true; | ||
} | ||
|
||
fn main() {} |