From b62290d421acf39db929f05522c8ce530e031067 Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Fri, 15 May 2015 08:07:48 -0700 Subject: syntax: Unquoting some statements requires trailing semicolons --- src/libsyntax/ext/quote.rs | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'src/libsyntax/ext') diff --git a/src/libsyntax/ext/quote.rs b/src/libsyntax/ext/quote.rs index 39ddafffaec..e0753b2f6f6 100644 --- a/src/libsyntax/ext/quote.rs +++ b/src/libsyntax/ext/quote.rs @@ -28,8 +28,7 @@ pub mod rt { use ast; use codemap::Spanned; use ext::base::ExtCtxt; - use parse::token; - use parse; + use parse::{self, token, classify}; use ptr::P; use std::rc::Rc; @@ -126,7 +125,16 @@ pub mod rt { impl ToTokens for P { fn to_tokens(&self, _cx: &ExtCtxt) -> Vec { - vec![ast::TtToken(self.span, token::Interpolated(token::NtStmt(self.clone())))] + let mut tts = vec![ + ast::TtToken(self.span, token::Interpolated(token::NtStmt(self.clone()))) + ]; + + // Some statements require a trailing semicolon. + if classify::stmt_ends_with_semi(&self.node) { + tts.push(ast::TtToken(self.span, token::Semi)); + } + + tts } } -- cgit 1.4.1-3-g733a5