Fix macro expansion in for loop pattern

This commit is contained in:
Jonas Schievink
2015-08-12 10:34:14 +02:00
parent 91c618f133
commit a016dfb1d1
2 changed files with 21 additions and 1 deletions
+1 -1
View File
@@ -400,7 +400,7 @@ fn allow_unstable(fld: &mut MacroExpander, span: Span) -> Span {
// `::std::option::Option::Some(<pat>) => <body>`
let pat_arm = {
let body_expr = fld.cx.expr_block(body);
let pat = noop_fold_pat(pat, fld);
let pat = fld.fold_pat(pat);
let some_pat = fld.cx.pat_some(pat_span, pat);
fld.cx.arm(pat_span, vec![some_pat], body_expr)
+20
View File
@@ -0,0 +1,20 @@
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
macro_rules! var {
( $name:ident ) => ( $name );
}
pub fn main() {
let x = [ 3, 3, 3 ];
for var!(i) in &x {
assert_eq!(*i, 3);
}
}