Skip to content

Commit d4d3133

Browse files
committed
Update for interpolation changes upstream
See rust-lang/rust#23085 Close #18
1 parent c13e234 commit d4d3133

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

src/plugin.rs

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,11 @@ fn parse_json(cx: &ExtCtxt, parser: &mut Parser) -> P<Expr> {
4040
Ok(parse_json(cx, p))
4141
}).ok().unwrap();
4242
let exprs = cx.expr_vec(orig_span, exprs);
43-
quote_expr!(cx, {{
43+
quote_expr!(cx, {
4444
use ::std::boxed::Box;
4545
let xs: Box<[_]> = Box::new($exprs);
4646
::rustc_serialize::json::Json::Array(xs.into_vec())
47-
}})
47+
})
4848
},
4949
&Token::OpenDelim(DelimToken::Brace) => {
5050
let _ = parser.bump();
@@ -53,22 +53,27 @@ fn parse_json(cx: &ExtCtxt, parser: &mut Parser) -> P<Expr> {
5353
let (istr, _) = p.parse_str().ok().unwrap();
5454
let s = &*istr;
5555
let _ = p.expect(&Token::Colon);
56-
let key = quote_expr!(cx, {{
56+
let key = quote_expr!(cx, {
5757
use ::std::borrow::ToOwned;
5858
$s.to_owned()
59-
}});
59+
});
6060
Ok((key, parse_json(cx, p)))
6161
}).ok().unwrap();
62-
let ob = quote_expr!(cx, _ob);
63-
let mut stmts = vec![];
62+
let mut insertions = vec![];
63+
// Can't use `quote_stmt!()` and interpolate a vector of
64+
// statements, seemingly. Should consider filing a bug
65+
// upstream.
6466
for &(ref key, ref value) in kvs.iter() {
65-
stmts.push(quote_stmt!(cx, $ob.insert($key, $value)));
67+
insertions.push(quote_expr!(cx, {
68+
_ob.insert($key, $value);
69+
}));
6670
}
67-
quote_expr!(cx, {{
68-
let mut $ob = ::std::collections::BTreeMap::new();
69-
$stmts;
70-
::rustc_serialize::json::Json::Object($ob)
71-
}})
71+
let expr = quote_expr!(cx, {
72+
let mut _ob = ::std::collections::BTreeMap::new();
73+
$insertions;
74+
::rustc_serialize::json::Json::Object(_ob)
75+
});
76+
expr
7277
},
7378
&Token::OpenDelim(DelimToken::Paren) => {
7479
let expr = parser.parse_expr();

0 commit comments

Comments
 (0)