//@aux-build:macros.rs
//@aux-build:proc_macros.rs

#![allow(unused)]

extern crate macros;
extern crate proc_macros;

use proc_macros::Derive;
use serde::Serialize;

fn main() {
    println!("one");
    println!("two");
    cfg!(unix);
    vec![1, 2, 3];

    #[derive(Serialize)]
    struct Derive;

    let _ = macros::expr!();
    macros::stmt!();
    let macros::pat!() = 1;
    let _: macros::ty!() = "";
    macros::item!();
    let _ = macros::binop!(1);

    eprintln!("allowed");
}

macros::attr! {
    struct S;
}

impl S {
    macros::item!();
}

trait Y {
    macros::item!();
}

impl Y for S {
    macros::item!();
}

#[derive(Derive)]
struct Foo;