@@ -2,6 +2,7 @@ import std::option;
2
2
import std:: map:: hashmap;
3
3
4
4
import driver:: session:: session;
5
+ import front:: parser:: parser;
5
6
import util:: common:: span;
6
7
import util:: common:: new_str_hash;
7
8
@@ -24,13 +25,17 @@ fn syntax_expander_table() -> hashmap[str, syntax_extension] {
24
25
}
25
26
26
27
type span_msg_fn = fn ( span sp, str msg) -> !;
28
+ type next_ann_fn = fn ( ) -> ast:: ann ;
27
29
28
30
// Provides a limited set of services necessary for syntax extensions
29
31
// to do their thing
30
32
type ext_ctxt = rec ( span_msg_fn span_err,
31
- span_msg_fn span_unimpl) ;
33
+ span_msg_fn span_unimpl,
34
+ next_ann_fn next_ann) ;
35
+
36
+ fn mk_ctxt ( parser parser) -> ext_ctxt {
37
+ auto sess = parser. get_session ( ) ;
32
38
33
- fn mk_ctxt ( session sess) -> ext_ctxt {
34
39
fn ext_span_err_ ( session sess, span sp, str msg) -> ! {
35
40
sess. span_err ( sp, msg) ;
36
41
}
@@ -41,8 +46,12 @@ fn mk_ctxt(session sess) -> ext_ctxt {
41
46
}
42
47
auto ext_span_unimpl = bind ext_span_unimpl_ ( sess, _, _) ;
43
48
49
+ fn ext_next_ann_ ( parser parser) -> ast:: ann { parser. get_ann ( ) }
50
+ auto ext_next_ann = bind ext_next_ann_ ( parser) ;
51
+
44
52
ret rec( span_err = ext_span_err,
45
- span_unimpl = ext_span_unimpl) ;
53
+ span_unimpl = ext_span_unimpl,
54
+ next_ann = ext_next_ann) ;
46
55
}
47
56
48
57
//
0 commit comments