From ae68e90af49c4cf9c75778e570d436fe36011b23 Mon Sep 17 00:00:00 2001 From: w00ns Date: Fri, 14 Aug 2015 07:23:29 +0200 Subject: [PATCH] Fix issue with for loop expansion --- src/libsyntax/ext/expand.rs | 11 +---------- src/test/run-pass/issue-27639.rs | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 10 deletions(-) create mode 100644 src/test/run-pass/issue-27639.rs diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index 6c09d6c107e..e61a0b5401e 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -385,16 +385,7 @@ pub fn expand_expr(e: P, fld: &mut MacroExpander) -> P { // expand let head = fld.fold_expr(head); - // create an hygienic ident - let iter = { - let ident = fld.cx.ident_of("iter"); - let new_ident = fresh_name(&ident); - let rename = (ident, new_ident); - let mut rename_list = vec![rename]; - let mut rename_fld = IdentRenamer{ renames: &mut rename_list }; - - rename_fld.fold_ident(ident) - }; + let iter = token::gensym_ident("iter"); let pat_span = fld.new_span(pat.span); // `::std::option::Option::Some() => ` diff --git a/src/test/run-pass/issue-27639.rs b/src/test/run-pass/issue-27639.rs new file mode 100644 index 00000000000..44c1eb86de8 --- /dev/null +++ b/src/test/run-pass/issue-27639.rs @@ -0,0 +1,19 @@ +// 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// ignore-pretty + +fn main() { + const iter: i32 = 0; + + for i in 1..10 { + println!("{}", i); + } +}