diff options
| author | bjorn3 <bjorn3@users.noreply.github.com> | 2019-06-12 20:54:38 +0200 |
|---|---|---|
| committer | bjorn3 <bjorn3@users.noreply.github.com> | 2019-07-26 11:28:04 +0200 |
| commit | de32ddad23abbc831ae60d5efefab0df84e8910b (patch) | |
| tree | 1c71f8ade410be7506733fdff2a254768e0955ca /example | |
| parent | bf3ec3be3e595780d842ac3069bb07f3c50f54b8 (diff) | |
| download | rust-de32ddad23abbc831ae60d5efefab0df84e8910b.tar.gz rust-de32ddad23abbc831ae60d5efefab0df84e8910b.zip | |
[WIP] Basic i128 support
Diffstat (limited to 'example')
| -rw-r--r-- | example/mini_core.rs | 8 | ||||
| -rw-r--r-- | example/mini_core_hello_world.rs | 136 |
2 files changed, 9 insertions, 135 deletions
diff --git a/example/mini_core.rs b/example/mini_core.rs index 8c372450abd..745e86de485 100644 --- a/example/mini_core.rs +++ b/example/mini_core.rs @@ -144,6 +144,14 @@ impl Add for usize { } } +impl Add for u128 { + type Output = Self; + + fn add(self, rhs: Self) -> Self { + self + rhs + } +} + #[lang = "sub"] pub trait Sub<RHS = Self> { type Output; diff --git a/example/mini_core_hello_world.rs b/example/mini_core_hello_world.rs index 15f0442b624..23a92c73780 100644 --- a/example/mini_core_hello_world.rs +++ b/example/mini_core_hello_world.rs @@ -118,139 +118,5 @@ fn take_f32(_f: f32) {} fn take_unique(_u: Unique<()>) {} fn main() { - take_unique(Unique { - pointer: 0 as *const (), - _marker: PhantomData, - }); - take_f32(0.1); - - //return; - - unsafe { - printf("Hello %s\n\0" as *const str as *const i8, "printf\0" as *const str as *const i8); - - let hello: &[u8] = b"Hello\0" as &[u8; 6]; - let ptr: *const u8 = hello as *const [u8] as *const u8; - puts(ptr); - - let world: Box<&str> = box "World!\0"; - puts(*world as *const str as *const u8); - world as Box<SomeTrait>; - - assert_eq!(intrinsics::bitreverse(0b10101000u8), 0b00010101u8); - - assert_eq!(intrinsics::bswap(0xabu8), 0xabu8); - assert_eq!(intrinsics::bswap(0xddccu16), 0xccddu16); - assert_eq!(intrinsics::bswap(0xffee_ddccu32), 0xccdd_eeffu32); - assert_eq!(intrinsics::bswap(0x1234_5678_ffee_ddccu64), 0xccdd_eeff_7856_3412u64); - - assert_eq!(intrinsics::size_of_val(hello) as u8, 6); - - let chars = &['C', 'h', 'a', 'r', 's']; - let chars = chars as &[char]; - assert_eq!(intrinsics::size_of_val(chars) as u8, 4 * 5); - - let a: &dyn SomeTrait = &"abc\0"; - a.object_safe(); - - assert_eq!(intrinsics::size_of_val(a) as u8, 16); - assert_eq!(intrinsics::size_of_val(&0u32) as u8, 4); - - assert_eq!(intrinsics::min_align_of::<u16>() as u8, 2); - assert_eq!(intrinsics::min_align_of_val(&a) as u8, intrinsics::min_align_of::<&str>() as u8); - - assert!(!intrinsics::needs_drop::<u8>()); - assert!(intrinsics::needs_drop::<NoisyDrop>()); - - Unique { - pointer: 0 as *const &str, - _marker: PhantomData, - } as Unique<dyn SomeTrait>; - - struct MyDst<T: ?Sized>(T); - - intrinsics::size_of_val(&MyDst([0u8; 4]) as &MyDst<[u8]>); - - struct Foo { - x: u8, - y: !, - } - - unsafe fn zeroed<T>() -> T { - intrinsics::init::<T>() - } - - unsafe fn uninitialized<T>() -> T { - MaybeUninit { uninit: () }.value - } - - zeroed::<(u8, u8)>(); - #[allow(unreachable_code)] - { - if false { - zeroed::<!>(); - zeroed::<Foo>(); - uninitialized::<Foo>(); - } - } - } - - let _ = box NoisyDrop { - text: "Boxed outer got dropped!\0", - inner: NoisyDropInner, - } as Box<SomeTrait>; - - const FUNC_REF: Option<fn()> = Some(main); - match FUNC_REF { - Some(_) => {}, - None => assert!(false), - } - - match Ordering::Less { - Ordering::Less => {}, - _ => assert!(false), - } - - [NoisyDropInner, NoisyDropInner]; - - let x = &[0u32, 42u32] as &[u32]; - match x { - [] => assert_eq!(0u32, 1), - [_, ref y..] => assert_eq!(&x[1] as *const u32 as usize, &y[0] as *const u32 as usize), - } - - assert_eq!(((|()| 42u8) as fn(()) -> u8)(()), 42); - - extern { - #[linkage = "weak"] - static ABC: *const u8; - } - - { - extern { - #[linkage = "weak"] - static ABC: *const u8; - } - } - - unsafe { assert_eq!(ABC as usize, 0); } - - &mut (|| Some(0 as *const ())) as &mut FnMut() -> Option<*const ()>; - - // checked binops - let zeroi8 = 0i8; - let oneu8 = 1u8; - let onei8 = 1i8; - zeroi8 - 1; - oneu8 - 1; - zeroi8 - -2i8; - #[allow(unreachable_code)] - { - if false { - let minustwoi8 = -2i8; - oneu8 + 255; - onei8 + 127; - minustwoi8 - 127; - } - } + assert_eq!((1u128 + 2) as u16, 3); } |
