|
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