Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir_def/src/macro_expansion_tests/mbe.rs')
| -rw-r--r-- | crates/hir_def/src/macro_expansion_tests/mbe.rs | 168 |
1 files changed, 1 insertions, 167 deletions
diff --git a/crates/hir_def/src/macro_expansion_tests/mbe.rs b/crates/hir_def/src/macro_expansion_tests/mbe.rs index 609eac855b..956a6466cc 100644 --- a/crates/hir_def/src/macro_expansion_tests/mbe.rs +++ b/crates/hir_def/src/macro_expansion_tests/mbe.rs @@ -4,6 +4,7 @@ mod tt_conversion; mod matching; mod meta_syntax; +mod regression; use expect_test::expect; @@ -1427,170 +1428,3 @@ macro_rules! foo { "#]], ); } - -// The following tests are based on real world situations -#[test] -fn test_vec() { - check( - r#" -macro_rules! vec { - ($($item:expr),*) => {{ - let mut v = Vec::new(); - $( v.push($item); )* - v - }}; -} -fn main() { - vec!(); - vec![1u32,2]; -} -"#, - expect![[r#" -macro_rules! vec { - ($($item:expr),*) => {{ - let mut v = Vec::new(); - $( v.push($item); )* - v - }}; -} -fn main() { - { - let mut v = Vec::new(); - v - }; - { - let mut v = Vec::new(); - v.push(1u32); - v.push(2); - v - }; -} -"#]], - ); -} - -#[test] -fn test_winapi_struct() { - // from https://github.com/retep998/winapi-rs/blob/a7ef2bca086aae76cf6c4ce4c2552988ed9798ad/src/macros.rs#L366 - - check( - r#" -macro_rules! STRUCT { - ($(#[$attrs:meta])* struct $name:ident { - $($field:ident: $ftype:ty,)+ - }) => ( - #[repr(C)] #[derive(Copy)] $(#[$attrs])* - pub struct $name { - $(pub $field: $ftype,)+ - } - impl Clone for $name { - #[inline] - fn clone(&self) -> $name { *self } - } - #[cfg(feature = "impl-default")] - impl Default for $name { - #[inline] - fn default() -> $name { unsafe { $crate::_core::mem::zeroed() } } - } - ); -} - -// from https://github.com/retep998/winapi-rs/blob/a7ef2bca086aae76cf6c4ce4c2552988ed9798ad/src/shared/d3d9caps.rs -STRUCT!{struct D3DVSHADERCAPS2_0 {Caps: u8,}} - -STRUCT!{#[cfg_attr(target_arch = "x86", repr(packed))] struct D3DCONTENTPROTECTIONCAPS {Caps : u8 ,}} -"#, - expect![[r##" -macro_rules! STRUCT { - ($(#[$attrs:meta])* struct $name:ident { - $($field:ident: $ftype:ty,)+ - }) => ( - #[repr(C)] #[derive(Copy)] $(#[$attrs])* - pub struct $name { - $(pub $field: $ftype,)+ - } - impl Clone for $name { - #[inline] - fn clone(&self) -> $name { *self } - } - #[cfg(feature = "impl-default")] - impl Default for $name { - #[inline] - fn default() -> $name { unsafe { $crate::_core::mem::zeroed() } } - } - ); -} - -#[repr(C)] -#[derive(Copy)] pub struct D3DVSHADERCAPS2_0 { - pub Caps: u8, -} -impl Clone for D3DVSHADERCAPS2_0 { - #[inline] fn clone(&self ) -> D3DVSHADERCAPS2_0 { - *self - } -} -#[cfg(feature = "impl-default")] impl Default for D3DVSHADERCAPS2_0 { - #[inline] fn default() -> D3DVSHADERCAPS2_0 { - unsafe { - $crate::_core::mem::zeroed() - } - } -} - -#[repr(C)] -#[derive(Copy)] -#[cfg_attr(target_arch = "x86", repr(packed))] pub struct D3DCONTENTPROTECTIONCAPS { - pub Caps: u8, -} -impl Clone for D3DCONTENTPROTECTIONCAPS { - #[inline] fn clone(&self ) -> D3DCONTENTPROTECTIONCAPS { - *self - } -} -#[cfg(feature = "impl-default")] impl Default for D3DCONTENTPROTECTIONCAPS { - #[inline] fn default() -> D3DCONTENTPROTECTIONCAPS { - unsafe { - $crate::_core::mem::zeroed() - } - } -} -"##]], - ); -} - -#[test] -fn test_int_base() { - check( - r#" -macro_rules! int_base { - ($Trait:ident for $T:ident as $U:ident -> $Radix:ident) => { - #[stable(feature = "rust1", since = "1.0.0")] - impl fmt::$Trait for $T { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - $Radix.fmt_int(*self as $U, f) - } - } - } -} -int_base!{Binary for isize as usize -> Binary} -"#, - expect![[r##" -macro_rules! int_base { - ($Trait:ident for $T:ident as $U:ident -> $Radix:ident) => { - #[stable(feature = "rust1", since = "1.0.0")] - impl fmt::$Trait for $T { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - $Radix.fmt_int(*self as $U, f) - } - } - } -} -#[stable(feature = "rust1", since = "1.0.0")] impl fmt::Binary for isize { - fn fmt(&self , f: &mut fmt::Formatter< '_>) -> fmt::Result { - Binary.fmt_int(*self as usize, f) - } -} -"##]], - ); -} |