From 7ccc97e5b4fb6a9a3fb76b806df4e22b9401a47c Mon Sep 17 00:00:00 2001 From: Corey Richardson Date: Wed, 22 May 2013 14:21:09 -0400 Subject: [PATCH] Fix ICE in macros --- src/libsyntax/ext/tt/transcribe.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/libsyntax/ext/tt/transcribe.rs b/src/libsyntax/ext/tt/transcribe.rs index d806801b7d1..b13dc3f3c0f 100644 --- a/src/libsyntax/ext/tt/transcribe.rs +++ b/src/libsyntax/ext/tt/transcribe.rs @@ -118,10 +118,13 @@ fn red(ad: @named_match, idx: &uint) -> @named_match { } fn lookup_cur_matched(r: &mut TtReader, name: ident) -> @named_match { - // FIXME (#3850): this looks a bit silly with an extra scope. - let start; - { start = *r.interpolations.get(&name); } - return lookup_cur_matched_by_matched(r, start); + match r.interpolations.find_copy(&name) { + Some(s) => lookup_cur_matched_by_matched(r, s), + None => { + r.sp_diag.span_fatal(r.cur_span, fmt!("unknown macro variable `%s`", + *r.interner.get(name))); + } + } } enum lis { lis_unconstrained, lis_constraint(uint, ident), lis_contradiction(~str) -- GitLab