main.rs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. //! 需要测试的时候可以在这里写测试代码,
  2. //! 然后在当前目录执行 `cargo expand --bin unified-init-expand`
  3. //! 就可以看到把proc macro展开后的代码了
  4. #![no_std]
  5. #![allow(internal_features)]
  6. #![feature(lang_items)]
  7. fn main() {
  8. todo!()
  9. }
  10. #[cfg(target_os = "none")]
  11. #[panic_handler]
  12. #[no_mangle]
  13. pub fn panic(_info: &core::panic::PanicInfo) -> ! {
  14. loop {}
  15. }
  16. #[cfg(target_os = "none")]
  17. #[lang = "eh_personality"]
  18. unsafe extern "C" fn eh_personality() {}
  19. #[cfg(test)]
  20. mod tests {
  21. use system_error::SystemError;
  22. use unified_init::define_unified_initializer_slice;
  23. use unified_init_macros::unified_init;
  24. use super::*;
  25. #[test]
  26. fn no_element() {
  27. define_unified_initializer_slice!(TEST_0);
  28. assert_eq!(TEST_0.len(), 0);
  29. }
  30. #[test]
  31. fn no_element_ne() {
  32. define_unified_initializer_slice!(TEST_0_NE);
  33. #[unified_init(TEST_0_NE)]
  34. fn x() -> Result<(), SystemError> {
  35. todo!()
  36. }
  37. assert_ne!(TEST_0_NE.len(), 0);
  38. }
  39. #[test]
  40. fn one_element() {
  41. define_unified_initializer_slice!(TEST_1);
  42. #[unified_init(TEST_1)]
  43. fn x() -> Result<(), SystemError> {
  44. todo!()
  45. }
  46. assert_eq!(TEST_1.len(), 1);
  47. }
  48. #[test]
  49. fn two_elements() {
  50. define_unified_initializer_slice!(TEST_2);
  51. #[unified_init(TEST_2)]
  52. fn x() -> Result<(), SystemError> {
  53. todo!()
  54. }
  55. #[unified_init(TEST_2)]
  56. fn y() -> Result<(), SystemError> {
  57. todo!()
  58. }
  59. assert_eq!(TEST_2.len(), 2);
  60. }
  61. }