12 #![feature(auto_traits, lang_items, no_core, start, intrinsics)]
21 // Because we don't have core yet.
35 impl Copy for isize {}
42 pub(crate) unsafe auto trait Freeze {}
47 extern "rust-intrinsic" {
55 pub fn printf(format: *const i8, ...) -> i32;
59 #[lang = "structural_peq"]
60 pub trait StructuralPartialEq {}
62 #[lang = "structural_teq"]
63 pub trait StructuralEq {}
65 #[lang = "drop_in_place"]
66 #[allow(unconditional_recursion)]
67 pub unsafe fn drop_in_place<T: ?Sized>(to_drop: *mut T) {
68 // Code here does not matter - this is replaced by the
69 // real drop glue by the compiler.
70 drop_in_place(to_drop);
85 static mut CONSTANT: isize = 10;
87 static mut TEST: Test = Test {
91 static mut TEST2: Test = Test {
95 static mut WITH_REF: WithRef = WithRef {
96 refe: unsafe { &TEST },
100 fn main(mut argc: isize, _argv: *const *const u8) -> isize {
102 libc::printf(b"%ld\n\0" as *const u8 as *const i8, CONSTANT);
103 libc::printf(b"%ld\n\0" as *const u8 as *const i8, TEST2.field);
105 libc::printf(b"%ld\n\0" as *const u8 as *const i8, TEST2.field);
106 libc::printf(b"%ld\n\0" as *const u8 as *const i8, WITH_REF.refe.field);
107 WITH_REF.refe = &TEST2;
108 libc::printf(b"%ld\n\0" as *const u8 as *const i8, TEST.field);
109 libc::printf(b"%ld\n\0" as *const u8 as *const i8, WITH_REF.refe.field);