Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/test-utils/src/minicore.rs')
-rw-r--r--crates/test-utils/src/minicore.rs76
1 files changed, 70 insertions, 6 deletions
diff --git a/crates/test-utils/src/minicore.rs b/crates/test-utils/src/minicore.rs
index 7b719b5dec..696928b522 100644
--- a/crates/test-utils/src/minicore.rs
+++ b/crates/test-utils/src/minicore.rs
@@ -35,7 +35,7 @@
//! error: fmt
//! fmt: option, result, transmute, coerce_unsized, copy, clone, derive
//! fmt_before_1_89_0: fmt
-//! fn: tuple
+//! fn: sized, tuple
//! from: sized, result
//! future: pin
//! coroutine: pin
@@ -55,7 +55,7 @@
//! panic: fmt
//! phantom_data:
//! pin:
-//! pointee: copy, send, sync, ord, hash, unpin
+//! pointee: copy, send, sync, ord, hash, unpin, phantom_data
//! range:
//! receiver: deref
//! result:
@@ -70,6 +70,7 @@
//! tuple:
//! unpin: sized
//! unsize: sized
+//! write: fmt
//! todo: panic
//! unimplemented: panic
//! column:
@@ -168,6 +169,17 @@ pub mod marker {
// region:phantom_data
#[lang = "phantom_data"]
pub struct PhantomData<T: PointeeSized>;
+
+ // region:clone
+ impl<T: PointeeSized> Clone for PhantomData<T> {
+ fn clone(&self) -> Self { Self }
+ }
+ // endregion:clone
+
+ // region:copy
+ impl<T: PointeeSized> Copy for PhantomData<T> {}
+ // endregion:copy
+
// endregion:phantom_data
// region:discriminant
@@ -325,6 +337,18 @@ pub mod clone {
*self
}
}
+
+ impl<T: Clone> Clone for [T; 0] {
+ fn clone(&self) -> Self {
+ []
+ }
+ }
+
+ impl<T: Clone> Clone for [T; 1] {
+ fn clone(&self) -> Self {
+ [self[0].clone()]
+ }
+ }
// endregion:builtin_impls
// region:derive
@@ -491,6 +515,16 @@ pub mod ptr {
#[lang = "metadata_type"]
type Metadata: Copy + Send + Sync + Ord + Hash + Unpin;
}
+
+ #[lang = "dyn_metadata"]
+ pub struct DynMetadata<Dyn: PointeeSized> {
+ _phantom: crate::marker::PhantomData<Dyn>,
+ }
+
+ pub const fn metadata<T: PointeeSized>(ptr: *const T) -> <T as Pointee>::Metadata {
+ loop {}
+ }
+
// endregion:pointee
// region:non_null
#[rustc_layout_scalar_valid_range_start(1)]
@@ -1035,6 +1069,7 @@ pub mod ops {
#[lang = "coroutine"]
pub trait Coroutine<R = ()> {
+ #[lang = "coroutine_yield"]
type Yield;
#[lang = "coroutine_return"]
type Return;
@@ -1123,7 +1158,7 @@ pub mod fmt {
pub struct Error;
pub type Result = crate::result::Result<(), Error>;
- pub struct Formatter<'a>;
+ pub struct Formatter<'a>(&'a ());
pub struct DebugTuple;
pub struct DebugStruct;
impl Formatter<'_> {
@@ -1596,6 +1631,12 @@ pub mod iter {
{
loop {}
}
+ fn collect<B: FromIterator<Self::Item>>(self) -> B
+ where
+ Self: Sized,
+ {
+ loop {}
+ }
// endregion:iterators
}
impl<I: Iterator + PointeeSized> Iterator for &mut I {
@@ -1665,10 +1706,13 @@ pub mod iter {
loop {}
}
}
+ pub trait FromIterator<A>: Sized {
+ fn from_iter<T: IntoIterator<Item = A>>(iter: T) -> Self;
+ }
}
- pub use self::collect::IntoIterator;
+ pub use self::collect::{IntoIterator, FromIterator};
}
- pub use self::traits::{IntoIterator, Iterator};
+ pub use self::traits::{IntoIterator, FromIterator, Iterator};
}
// endregion:iterator
@@ -1769,6 +1813,26 @@ mod macros {
}
// endregion:panic
+ // region:write
+ #[macro_export]
+ macro_rules! write {
+ ($dst:expr, $($arg:tt)*) => {
+ $dst.write_fmt($crate::format_args!($($arg)*))
+ };
+ }
+
+ #[macro_export]
+ #[allow_internal_unstable(format_args_nl)]
+ macro_rules! writeln {
+ ($dst:expr $(,)?) => {
+ $crate::write!($dst, "\n")
+ };
+ ($dst:expr, $($arg:tt)*) => {
+ $dst.write_fmt($crate::format_args_nl!($($arg)*))
+ };
+ }
+ // endregion:write
+
// region:assert
#[macro_export]
#[rustc_builtin_macro]
@@ -1944,7 +2008,7 @@ pub mod prelude {
convert::AsRef, // :as_ref
convert::{From, Into, TryFrom, TryInto}, // :from
default::Default, // :default
- iter::{IntoIterator, Iterator}, // :iterator
+ iter::{IntoIterator, Iterator, FromIterator}, // :iterator
macros::builtin::{derive, derive_const}, // :derive
marker::Copy, // :copy
marker::Send, // :send