#![feature(alloc)]
#![feature(allocator_api)]
#![feature(allocator_internals)]
#![feature(compiler_builtins_lib)]
#![feature(const_cell_new)]
#![feature(const_fn)]
#![feature(const_ptr_null_mut)]
#![feature(global_allocator)]
#![feature(prelude_import)]
#![feature(proc_macro)]
#![feature(slice_get_slice)]
#![no_std]
extern crate alloc;
extern crate compiler_builtins;
extern crate drone_core;
extern crate drone_cortex_m;
extern crate test;
#[prelude_import]
#[allow(unused_imports)]
use drone_cortex_m::prelude::*;
use core::mem::size_of;
use drone_cortex_m::thread::prelude::*;
drone_core::heap! {
Heap;
#[global_allocator]
ALLOC;
}
mod vtable1 {
#![allow(dead_code)]
use super::*;
drone_core::thread::thread_local!(ThreadLocal; THREADS);
trait Irq10 {}
trait Irq5 {}
drone_cortex_m::vtable! {
#[doc = "test attribute"]
VectorTable;
#[doc = "test attribute"]
ThreadIndex;
#[doc = "test attribute"]
THREADS;
ThreadLocal;
#[doc = "test attribute"]
NMI;
#[doc = "test attribute"]
SYS_TICK;
#[doc = "test attribute"]
10: EXTI4;
#[doc = "test attribute"]
5: RCC;
}
}
mod vtable2 {
#![allow(dead_code)]
use super::*;
drone_core::thread::thread_local!(ThreadLocal; THREADS);
drone_cortex_m::vtable!(VectorTable; ThreadIndex; THREADS; ThreadLocal);
}
#[test]
fn new() {
unsafe extern "C" fn reset() -> ! {
loop {}
}
vtable1::VectorTable::new(reset);
vtable2::VectorTable::new(reset);
}
#[test]
fn size() {
assert_eq!(
(size_of::<vtable1::VectorTable>() - size_of::<vtable2::VectorTable>()) / 4,
11
);
}