|
15 | 15 | extern crate syntax; |
16 | 16 |
|
17 | 17 | use syntax::ast; |
18 | | -use syntax::codemap; |
| 18 | +use syntax::codemap::{self, DUMMY_SP}; |
19 | 19 | use syntax::parse; |
20 | 20 | use syntax::print::pprust; |
21 | 21 |
|
22 | | -trait FakeExtCtxt { |
23 | | - fn call_site(&self) -> codemap::Span; |
24 | | - fn cfg(&self) -> ast::CrateConfig; |
25 | | - fn ident_of(&self, st: &str) -> ast::Ident; |
26 | | - fn name_of(&self, st: &str) -> ast::Name; |
27 | | - fn parse_sess(&self) -> &parse::ParseSess; |
28 | | -} |
29 | | - |
30 | | -impl FakeExtCtxt for parse::ParseSess { |
31 | | - fn call_site(&self) -> codemap::Span { |
32 | | - codemap::Span { |
33 | | - lo: codemap::BytePos(0), |
34 | | - hi: codemap::BytePos(0), |
35 | | - expn_id: codemap::NO_EXPANSION, |
36 | | - } |
37 | | - } |
38 | | - fn cfg(&self) -> ast::CrateConfig { Vec::new() } |
39 | | - fn ident_of(&self, st: &str) -> ast::Ident { |
40 | | - parse::token::str_to_ident(st) |
41 | | - } |
42 | | - fn name_of(&self, st: &str) -> ast::Name { |
43 | | - parse::token::intern(st) |
44 | | - } |
45 | | - fn parse_sess(&self) -> &parse::ParseSess { self } |
46 | | -} |
47 | | - |
48 | 22 | fn main() { |
49 | | - let cx = parse::new_parse_sess(); |
| 23 | + let ps = syntax::parse::new_parse_sess(); |
| 24 | + let mut cx = syntax::ext::base::ExtCtxt::new( |
| 25 | + &ps, vec![], |
| 26 | + syntax::ext::expand::ExpansionConfig::default("qquote".to_string())); |
| 27 | + cx.bt_push(syntax::codemap::ExpnInfo { |
| 28 | + call_site: DUMMY_SP, |
| 29 | + callee: syntax::codemap::NameAndSpan { |
| 30 | + name: "".to_string(), |
| 31 | + format: syntax::codemap::MacroBang, |
| 32 | + allow_internal_unstable: false, |
| 33 | + span: None, |
| 34 | + } |
| 35 | + }); |
| 36 | + let cx = &mut cx; |
50 | 37 |
|
51 | 38 | assert_eq!(pprust::expr_to_string(&*quote_expr!(&cx, 23)), "23"); |
52 | 39 |
|
|
0 commit comments