Skip to content

Commit df03437

Browse files
committed
Use minicore in tests/abi/compatibility.rs as an example
1 parent 421fc56 commit df03437

File tree

1 file changed

+12
-56
lines changed

1 file changed

+12
-56
lines changed

tests/ui/abi/compatibility.rs

+12-56
Original file line numberDiff line numberDiff line change
@@ -58,76 +58,33 @@
5858
//@ revisions: nvptx64
5959
//@[nvptx64] compile-flags: --target nvptx64-nvidia-cuda
6060
//@[nvptx64] needs-llvm-components: nvptx
61-
#![feature(rustc_attrs, unsized_fn_params, transparent_unions)]
62-
#![cfg_attr(not(host), feature(no_core, lang_items), no_std, no_core)]
61+
#![feature(no_core, rustc_attrs, lang_items)]
62+
#![feature(unsized_fn_params, transparent_unions)]
63+
#![no_std]
64+
#![no_core]
6365
#![allow(unused, improper_ctypes_definitions, internal_features)]
6466

6567
// FIXME: some targets are broken in various ways.
6668
// Hence there are `cfg` throughout this test to disable parts of it on those targets.
6769
// sparc64: https://github.com/rust-lang/rust/issues/115336
6870
// mips64: https://github.com/rust-lang/rust/issues/115404
6971

70-
#[cfg(host)]
71-
use std::{
72-
any::Any, marker::PhantomData, mem::ManuallyDrop, num::NonZero, ptr::NonNull, rc::Rc, sync::Arc,
73-
};
72+
//@ use-minicore
73+
extern crate minicore;
74+
use minicore::*;
7475

75-
/// To work cross-target this test must be no_core.
76-
/// This little prelude supplies what we need.
77-
#[cfg(not(host))]
76+
/// To work cross-target this test must be no_core. This little prelude supplies what we need.
77+
///
78+
/// Note that `minicore` provides a very minimal subset of `core` items (not yet complete). This
79+
/// prelude contains `alloc` and non-`core` (but in `std`) items that minicore does not stub out.
7880
mod prelude {
79-
#[lang = "sized"]
80-
pub trait Sized {}
81-
82-
#[lang = "receiver"]
83-
pub trait Receiver {}
84-
impl<T: ?Sized> Receiver for &T {}
85-
impl<T: ?Sized> Receiver for &mut T {}
86-
87-
#[lang = "copy"]
88-
pub trait Copy: Sized {}
89-
impl Copy for i32 {}
90-
impl Copy for f32 {}
91-
impl<T: ?Sized> Copy for &T {}
92-
impl<T: ?Sized> Copy for *const T {}
93-
impl<T: ?Sized> Copy for *mut T {}
81+
use minicore::*;
9482

9583
#[lang = "clone"]
9684
pub trait Clone: Sized {
9785
fn clone(&self) -> Self;
9886
}
9987

100-
#[lang = "phantom_data"]
101-
pub struct PhantomData<T: ?Sized>;
102-
impl<T: ?Sized> Copy for PhantomData<T> {}
103-
104-
#[lang = "unsafe_cell"]
105-
#[repr(transparent)]
106-
pub struct UnsafeCell<T: ?Sized> {
107-
value: T,
108-
}
109-
110-
pub trait Any: 'static {}
111-
112-
pub enum Option<T> {
113-
None,
114-
Some(T),
115-
}
116-
impl<T: Copy> Copy for Option<T> {}
117-
118-
pub enum Result<T, E> {
119-
Ok(T),
120-
Err(E),
121-
}
122-
impl<T: Copy, E: Copy> Copy for Result<T, E> {}
123-
124-
#[lang = "manually_drop"]
125-
#[repr(transparent)]
126-
pub struct ManuallyDrop<T: ?Sized> {
127-
value: T,
128-
}
129-
impl<T: Copy + ?Sized> Copy for ManuallyDrop<T> {}
130-
13188
#[repr(transparent)]
13289
#[rustc_layout_scalar_valid_range_start(1)]
13390
#[rustc_nonnull_optimization_guaranteed]
@@ -185,7 +142,6 @@ mod prelude {
185142
alloc: A,
186143
}
187144
}
188-
#[cfg(not(host))]
189145
use prelude::*;
190146

191147
macro_rules! test_abi_compatible {

0 commit comments

Comments
 (0)