Skip to content

Commit f4a7c38

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

File tree

1 file changed

+12
-57
lines changed

1 file changed

+12
-57
lines changed

tests/ui/abi/compatibility.rs

+12-57
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
//@ check-pass
2-
//@ revisions: host
32
//@ revisions: i686
43
//@[i686] compile-flags: --target i686-unknown-linux-gnu
54
//@[i686] needs-llvm-components: x86
@@ -58,76 +57,33 @@
5857
//@ revisions: nvptx64
5958
//@[nvptx64] compile-flags: --target nvptx64-nvidia-cuda
6059
//@[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)]
60+
#![feature(no_core, rustc_attrs, lang_items)]
61+
#![feature(unsized_fn_params, transparent_unions)]
62+
#![no_std]
63+
#![no_core]
6364
#![allow(unused, improper_ctypes_definitions, internal_features)]
6465

6566
// FIXME: some targets are broken in various ways.
6667
// Hence there are `cfg` throughout this test to disable parts of it on those targets.
6768
// sparc64: https://github.com/rust-lang/rust/issues/115336
6869
// mips64: https://github.com/rust-lang/rust/issues/115404
6970

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

75-
/// To work cross-target this test must be no_core.
76-
/// This little prelude supplies what we need.
77-
#[cfg(not(host))]
75+
/// To work cross-target this test must be no_core. This little prelude supplies what we need.
76+
///
77+
/// Note that `minicore` provides a very minimal subset of `core` items (not yet complete). This
78+
/// prelude contains `alloc` and non-`core` (but in `std`) items that minicore does not stub out.
7879
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 {}
80+
use minicore::*;
9481

9582
#[lang = "clone"]
9683
pub trait Clone: Sized {
9784
fn clone(&self) -> Self;
9885
}
9986

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-
13187
#[repr(transparent)]
13288
#[rustc_layout_scalar_valid_range_start(1)]
13389
#[rustc_nonnull_optimization_guaranteed]
@@ -185,7 +141,6 @@ mod prelude {
185141
alloc: A,
186142
}
187143
}
188-
#[cfg(not(host))]
189144
use prelude::*;
190145

191146
macro_rules! test_abi_compatible {

0 commit comments

Comments
 (0)