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); + } +}