//@ aux-build:weird-hygiene.rs

#![feature(stmt_expr_attributes)]
#![feature(proc_macro_hygiene)]

extern crate weird_hygiene;
use weird_hygiene::*;

macro_rules! other {
    ($tokens:expr) => {
        macro_rules! call_it {
            ($outer_ident:ident) => {
                macro_rules! inner {
                    () => {
                        $outer_ident;
                    }
                }
            }
        }

        #[derive(WeirdDerive)]
        enum MyEnum {
            Value = (stringify!($tokens + hidden_ident), 1).1 //~ ERROR cannot find
        }

        inner!();
    }
}

macro_rules! invoke_it {
    ($token:expr) => {
        #[recollect_attr] {
            $token;
            hidden_ident //~ ERROR cannot find
        }
    }
}

fn main() {
    // `other` and `invoke_it` are both macro_rules! macros,
    // so it should be impossible for them to ever see `hidden_ident`,
    // even if they invoke a proc macro.
    let hidden_ident = "Hello1";
    other!(50);
    invoke_it!(25);
}
