// Copyright 2012-2014 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-cross-compile // error-pattern:expected expression, found statement (`let`) #![feature(quote, rustc_private)] extern crate syntax; extern crate syntax_pos; use syntax::ast; use syntax::codemap; use syntax::print::pprust; use syntax::symbol::Symbol; use syntax_pos::DUMMY_SP; fn main() { syntax::with_globals(|| run()); } fn run() { let ps = syntax::parse::ParseSess::new(codemap::FilePathMapping::empty()); let mut resolver = syntax::ext::base::DummyResolver; let mut cx = syntax::ext::base::ExtCtxt::new( &ps, syntax::ext::expand::ExpansionConfig::default("qquote".to_string()), &mut resolver); let cx = &mut cx; println!("{}", pprust::expr_to_string(&*quote_expr!(&cx, 23))); assert_eq!(pprust::expr_to_string(&*quote_expr!(&cx, 23)), "23"); let expr = quote_expr!(&cx, let x isize = 20;); println!("{}", pprust::expr_to_string(&*expr)); assert_eq!(pprust::expr_to_string(&*expr), "let x isize = 20;"); }