12 #![feature(auto_traits, lang_items, no_core, start, intrinsics)]
21 // Because we don't have core yet.
29 impl Copy for isize {}
36 pub(crate) unsafe auto trait Freeze {}
41 extern "rust-intrinsic" {
49 pub fn printf(format: *const i8, ...) -> i32;
53 #[lang = "structural_peq"]
54 pub trait StructuralPartialEq {}
56 #[lang = "structural_teq"]
57 pub trait StructuralEq {}
59 #[lang = "drop_in_place"]
60 #[allow(unconditional_recursion)]
61 pub unsafe fn drop_in_place<T: ?Sized>(to_drop: *mut T) {
62 // Code here does not matter - this is replaced by the
63 // real drop glue by the compiler.
64 drop_in_place(to_drop);
79 static mut CONSTANT: isize = 10;
81 static mut TEST: Test = Test {
85 static mut TEST2: Test = Test {
89 static mut WITH_REF: WithRef = WithRef {
90 refe: unsafe { &TEST },
94 fn main(mut argc: isize, _argv: *const *const u8) -> isize {
96 libc::printf(b"%ld\n\0" as *const u8 as *const i8, CONSTANT);
97 libc::printf(b"%ld\n\0" as *const u8 as *const i8, TEST2.field);
99 libc::printf(b"%ld\n\0" as *const u8 as *const i8, TEST2.field);
100 libc::printf(b"%ld\n\0" as *const u8 as *const i8, WITH_REF.refe.field);
101 WITH_REF.refe = &TEST2;
102 libc::printf(b"%ld\n\0" as *const u8 as *const i8, TEST.field);
103 libc::printf(b"%ld\n\0" as *const u8 as *const i8, WITH_REF.refe.field);