// run-pass
#![allow(unused_imports)]

mod foo {
    pub trait Value {
        fn value(&self) -> usize;
    }
}

static BLOCK_USE: usize = {
    use foo::Value;
    100
};

static BLOCK_STRUCT_DEF: usize = {
    struct Foo {
        a: usize
    }
    Foo{ a: 300 }.a
};

static BLOCK_FN_DEF: fn(usize) -> usize = {
    fn foo(a: usize) -> usize {
        a + 10
    }
    foo
};

static BLOCK_MACRO_RULES: usize = {
    macro_rules! baz {
        () => (412)
    }
    baz!()
};

pub fn main() {
    assert_eq!(BLOCK_USE, 100);
    assert_eq!(BLOCK_STRUCT_DEF, 300);
    assert_eq!(BLOCK_FN_DEF(390), 400);
    assert_eq!(BLOCK_MACRO_RULES, 412);
}
