rust/src/test/run-pass/borrowck-macro-interaction-issue-6304.rs

32 lines
555 B
Rust
Raw Normal View History

// Check that we do not ICE when compiling this
// macro, which reuses the expression `$id`
#[feature(macro_rules)];
struct Foo {
a: int
}
pub enum Bar {
Bar1, Bar2(int, ~Bar),
}
impl Foo {
fn elaborate_stm(&mut self, s: ~Bar) -> ~Bar {
macro_rules! declare(
($id:expr, $rest:expr) => ({
self.check_id($id);
~Bar2($id, $rest)
})
);
match s {
~Bar2(id, rest) => declare!(id, self.elaborate_stm(rest)),
2013-09-29 21:23:57 -05:00
_ => fail2!()
}
}
2013-09-29 21:23:57 -05:00
fn check_id(&mut self, s: int) { fail2!() }
}
2013-09-29 21:23:57 -05:00
pub fn main() { }