diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2014-02-09 14:08:18 -0500 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2014-02-11 16:55:22 -0500 |
| commit | 0e005ab84892aa201f720cc60d2aef002bfd7a4a (patch) | |
| tree | fca324389341ead6f3cba2035f40c68caa0383c3 | |
| parent | 0f5baad6ee5191991d18271aabebaf3fc6124424 (diff) | |
| download | rust-0e005ab84892aa201f720cc60d2aef002bfd7a4a.tar.gz rust-0e005ab84892aa201f720cc60d2aef002bfd7a4a.zip | |
to_str -- update to contain scope of closure
| -rw-r--r-- | src/libsyntax/ext/deriving/to_str.rs | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/src/libsyntax/ext/deriving/to_str.rs b/src/libsyntax/ext/deriving/to_str.rs index 186f1254493..e5145fb15f7 100644 --- a/src/libsyntax/ext/deriving/to_str.rs +++ b/src/libsyntax/ext/deriving/to_str.rs @@ -67,31 +67,32 @@ fn to_str_substructure(cx: &mut ExtCtxt, span: Span, substr: &Substructure) let mut stmts = ~[cx.stmt_let(span, true, buf, init)]; let push_str = cx.ident_of("push_str"); - let push = |s: @Expr| { - let ebuf = cx.expr_ident(span, buf); - let call = cx.expr_method_call(span, ebuf, push_str, ~[s]); - stmts.push(cx.stmt_expr(call)); - }; + { + let push = |s: @Expr| { + let ebuf = cx.expr_ident(span, buf); + let call = cx.expr_method_call(span, ebuf, push_str, ~[s]); + stmts.push(cx.stmt_expr(call)); + }; - for (i, &FieldInfo {name, span, self_, .. }) in fields.iter().enumerate() { - if i > 0 { - push(cx.expr_str(span, InternedString::new(", "))); - } - match name { - None => {} - Some(id) => { - let interned_id = token::get_ident(id.name); - let name = interned_id.get() + ": "; - push(cx.expr_str(span, - token::intern_and_get_ident(name))); + for (i, &FieldInfo {name, span, self_, .. }) in fields.iter().enumerate() { + if i > 0 { + push(cx.expr_str(span, InternedString::new(", "))); + } + match name { + None => {} + Some(id) => { + let interned_id = token::get_ident(id.name); + let name = interned_id.get() + ": "; + push(cx.expr_str(span, + token::intern_and_get_ident(name))); + } } + push(cx.expr_method_call(span, self_, to_str, ~[])); } - push(cx.expr_method_call(span, self_, to_str, ~[])); + push(cx.expr_str(span, end)); } - push(cx.expr_str(span, end)); - cx.expr_block(cx.block(span, stmts, Some(cx.expr_ident(span, - buf)))) + cx.expr_block(cx.block(span, stmts, Some(cx.expr_ident(span, buf)))) } }; |
