| #![feature(decl_macro, rustc_attrs)] |
| |
| #[rustc_macro_transparency = "transparent"] |
| macro transparent() { |
| struct Transparent; |
| let transparent = 0; |
| } |
| #[rustc_macro_transparency = "semitransparent"] |
| macro semiopaque() { |
| struct SemiOpaque; |
| let semiopaque = 0; |
| } |
| #[rustc_macro_transparency = "opaque"] |
| macro opaque() { |
| struct Opaque; |
| let opaque = 0; |
| } |
| |
| fn main() { |
| transparent!(); |
| semiopaque!(); |
| opaque!(); |
| |
| Transparent; // OK |
| SemiOpaque; // OK |
| Opaque; //~ ERROR cannot find value `Opaque` in this scope |
| |
| transparent; // OK |
| semiopaque; //~ ERROR expected value, found macro `semiopaque` |
| opaque; //~ ERROR expected value, found macro `opaque` |
| } |