diff options
| author | Guillaume Gomez <guillaume.gomez@huawei.com> | 2022-09-13 15:30:16 +0200 |
|---|---|---|
| committer | Rémy Rakic <remy.rakic+github@gmail.com> | 2022-10-20 22:44:10 +0000 |
| commit | 7f0224e8688126a536ba94c2bb8a17df565da2da (patch) | |
| tree | ac43a0f6ad1b01bf42142d3ee8593f6dc79d1966 | |
| parent | ae5108a1ed6a302ce08e39020b29933ac1520655 (diff) | |
| download | rust-7f0224e8688126a536ba94c2bb8a17df565da2da.tar.gz rust-7f0224e8688126a536ba94c2bb8a17df565da2da.zip | |
Add ui test to ensure attributes generated from macros are kept as expected
| -rw-r--r-- | src/test/ui/attr-from-macro.rs | 20 | ||||
| -rw-r--r-- | src/test/ui/auxiliary/attr-from-macro.rs | 15 |
2 files changed, 35 insertions, 0 deletions
diff --git a/src/test/ui/attr-from-macro.rs b/src/test/ui/attr-from-macro.rs new file mode 100644 index 00000000000..bb3a5c94d41 --- /dev/null +++ b/src/test/ui/attr-from-macro.rs @@ -0,0 +1,20 @@ +// aux-build:attr-from-macro.rs +// run-pass + +extern crate attr_from_macro; + +attr_from_macro::creator! { + struct Foo; + enum Bar; + enum FooBar; +} + +fn main() { + // Checking the `repr(u32)` on the enum. + assert_eq!(4, std::mem::size_of::<Bar>()); + // Checking the `repr(u16)` on the enum. + assert_eq!(2, std::mem::size_of::<FooBar>()); + + // Checking the Debug impl on the types. + eprintln!("{:?} {:?} {:?}", Foo, Bar::A, FooBar::A); +} diff --git a/src/test/ui/auxiliary/attr-from-macro.rs b/src/test/ui/auxiliary/attr-from-macro.rs new file mode 100644 index 00000000000..9b388675c80 --- /dev/null +++ b/src/test/ui/auxiliary/attr-from-macro.rs @@ -0,0 +1,15 @@ +#[macro_export] +macro_rules! creator { + (struct $name1:ident; enum $name2:ident; enum $name3:ident;) => { + #[derive(Debug)] + pub struct $name1; + + #[derive(Debug)] + #[repr(u32)] + pub enum $name2 { A } + + #[derive(Debug)] + #[repr(u16)] + pub enum $name3 { A } + } +} |
