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