Skip to content

Commit 6fdfd79

Browse files
committed
---
yaml --- r: 208555 b: refs/heads/snap-stage3 c: b62290d h: refs/heads/master i: 208553: bf56ffd 208551: 0ea007c v: v3
1 parent e3b5300 commit 6fdfd79

File tree

3 files changed

+18
-4
lines changed

3 files changed

+18
-4
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: 38a97becdf3e6a6157f6f7ec2d98ade8d8edc193
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: 7b00658413db724525db72364b7f77b65ef6af1d
4+
refs/heads/snap-stage3: b62290d421acf39db929f05522c8ce530e031067
55
refs/heads/try: 7b4ef47b7805a402d756fb8157101f64880a522f
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d

branches/snap-stage3/src/libsyntax/ext/quote.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@ pub mod rt {
2828
use ast;
2929
use codemap::Spanned;
3030
use ext::base::ExtCtxt;
31-
use parse::token;
32-
use parse;
31+
use parse::{self, token, classify};
3332
use ptr::P;
3433
use std::rc::Rc;
3534

@@ -126,7 +125,16 @@ pub mod rt {
126125

127126
impl ToTokens for P<ast::Stmt> {
128127
fn to_tokens(&self, _cx: &ExtCtxt) -> Vec<TokenTree> {
129-
vec![ast::TtToken(self.span, token::Interpolated(token::NtStmt(self.clone())))]
128+
let mut tts = vec![
129+
ast::TtToken(self.span, token::Interpolated(token::NtStmt(self.clone())))
130+
];
131+
132+
// Some statements require a trailing semicolon.
133+
if classify::stmt_ends_with_semi(&self.node) {
134+
tts.push(ast::TtToken(self.span, token::Semi));
135+
}
136+
137+
tts
130138
}
131139
}
132140

branches/snap-stage3/src/test/run-pass-fulldeps/quote-tokens.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@ fn syntax_extension(cx: &ExtCtxt) {
4343
let _n: syntax::ast::Attribute = quote_attr!(cx, #![cfg(foo, bar = "baz")]);
4444

4545
let _o: Option<P<syntax::ast::Item>> = quote_item!(cx, fn foo<T: ?Sized>() {});
46+
47+
let stmts = vec![
48+
quote_stmt!(cx, let x = 1;).unwrap(),
49+
quote_stmt!(cx, let y = 2;).unwrap(),
50+
];
51+
let expr: P<syntax::ast::Expr> = quote_expr!(cx, x + y);
4652
}
4753

4854
fn main() {

0 commit comments

Comments
 (0)