enum Enum<T> { SVariant { v: T }, UVariant }

macro_rules! is_variant {
    (TSVariant, ) => (!);
    (SVariant, ) => (!);
    (UVariant, $expr:expr) => (is_variant!(@check UVariant, {}, $expr));
    (@check $variant:ident, $matcher:tt, $expr:expr) => (
        assert!(if let Enum::$variant::<()> $matcher = $expr () { true } else { false },
                );
    );
}

fn main() {
    is_variant!(UVariant, Enum::<()>::UVariant); //~ ERROR expected function
}