@@ -33,7 +33,7 @@ pub struct MacroDef {
33
33
ext : SyntaxExtension
34
34
}
35
35
36
- pub type ItemDecorator = @fn ( @ext_ctxt ,
36
+ pub type ItemDecorator = @fn ( @ExtCtxt ,
37
37
span ,
38
38
@ast:: meta_item ,
39
39
~[ @ast:: item ] )
@@ -44,7 +44,7 @@ pub struct SyntaxExpanderTT {
44
44
span : Option < span >
45
45
}
46
46
47
- pub type SyntaxExpanderTTFun = @fn ( @ext_ctxt ,
47
+ pub type SyntaxExpanderTTFun = @fn ( @ExtCtxt ,
48
48
span ,
49
49
& [ ast:: token_tree ] )
50
50
-> MacResult ;
@@ -54,7 +54,7 @@ pub struct SyntaxExpanderTTItem {
54
54
span : Option < span >
55
55
}
56
56
57
- pub type SyntaxExpanderTTItemFun = @fn ( @ext_ctxt ,
57
+ pub type SyntaxExpanderTTItemFun = @fn ( @ExtCtxt ,
58
58
span ,
59
59
ast:: ident ,
60
60
~[ ast:: token_tree ] )
@@ -202,134 +202,109 @@ pub fn syntax_expander_table() -> SyntaxEnv {
202
202
// One of these is made during expansion and incrementally updated as we go;
203
203
// when a macro expansion occurs, the resulting nodes have the backtrace()
204
204
// -> expn_info of their expansion context stored into their span.
205
- pub trait ext_ctxt {
206
- fn codemap ( & self ) -> @CodeMap ;
207
- fn parse_sess ( & self ) -> @mut parse:: ParseSess ;
208
- fn cfg ( & self ) -> ast:: crate_cfg ;
209
- fn call_site ( & self ) -> span ;
210
- fn print_backtrace ( & self ) ;
211
- fn backtrace ( & self ) -> Option < @ExpnInfo > ;
212
- fn mod_push ( & self , mod_name : ast:: ident ) ;
213
- fn mod_pop ( & self ) ;
214
- fn mod_path ( & self ) -> ~[ ast:: ident ] ;
215
- fn bt_push ( & self , ei : codemap:: ExpnInfo ) ;
216
- fn bt_pop ( & self ) ;
217
- fn span_fatal ( & self , sp : span , msg : & str ) -> !;
218
- fn span_err ( & self , sp : span , msg : & str ) ;
219
- fn span_warn ( & self , sp : span , msg : & str ) ;
220
- fn span_unimpl ( & self , sp : span , msg : & str ) -> !;
221
- fn span_bug ( & self , sp : span , msg : & str ) -> !;
222
- fn bug ( & self , msg : & str ) -> !;
223
- fn next_id ( & self ) -> ast:: node_id ;
224
- fn trace_macros ( & self ) -> bool ;
225
- fn set_trace_macros ( & self , x : bool ) ;
226
- /* for unhygienic identifier transformation */
227
- fn str_of ( & self , id : ast:: ident ) -> ~str ;
228
- fn ident_of ( & self , st : & str ) -> ast:: ident ;
205
+ pub struct ExtCtxt {
206
+ parse_sess : @mut parse:: ParseSess ,
207
+ cfg : ast:: crate_cfg ,
208
+ backtrace : @mut Option < @ExpnInfo > ,
209
+
210
+ // These two @mut's should really not be here,
211
+ // but the self types for CtxtRepr are all wrong
212
+ // and there are bugs in the code for object
213
+ // types that make this hard to get right at the
214
+ // moment. - nmatsakis
215
+ mod_path : @mut ~[ ast:: ident ] ,
216
+ trace_mac : @mut bool
229
217
}
230
218
231
- pub fn mk_ctxt ( parse_sess : @mut parse:: ParseSess , cfg : ast:: crate_cfg )
232
- -> @ext_ctxt {
233
- struct CtxtRepr {
234
- parse_sess : @mut parse:: ParseSess ,
235
- cfg : ast:: crate_cfg ,
236
- backtrace : @mut Option < @ExpnInfo > ,
237
-
238
- // These two @mut's should really not be here,
239
- // but the self types for CtxtRepr are all wrong
240
- // and there are bugs in the code for object
241
- // types that make this hard to get right at the
242
- // moment. - nmatsakis
243
- mod_path : @mut ~[ ast:: ident ] ,
244
- trace_mac : @mut bool
245
- }
246
- impl ext_ctxt for CtxtRepr {
247
- fn codemap ( & self ) -> @CodeMap { self . parse_sess . cm }
248
- fn parse_sess ( & self ) -> @mut parse:: ParseSess { self . parse_sess }
249
- fn cfg ( & self ) -> ast:: crate_cfg { copy self . cfg }
250
- fn call_site ( & self ) -> span {
251
- match * self . backtrace {
252
- Some ( @ExpandedFrom ( CallInfo { call_site : cs, _} ) ) => cs,
253
- None => self . bug ( "missing top span" )
254
- }
219
+ pub impl ExtCtxt {
220
+ fn new ( parse_sess : @mut parse:: ParseSess , cfg : ast:: crate_cfg ) -> @ExtCtxt {
221
+ @ExtCtxt {
222
+ parse_sess : parse_sess,
223
+ cfg : cfg,
224
+ backtrace : @mut None ,
225
+ mod_path : @mut ~[ ] ,
226
+ trace_mac : @mut false
227
+ }
228
+ }
229
+
230
+ fn codemap ( & self ) -> @CodeMap { self . parse_sess . cm }
231
+ fn parse_sess ( & self ) -> @mut parse:: ParseSess { self . parse_sess }
232
+ fn cfg ( & self ) -> ast:: crate_cfg { copy self . cfg }
233
+ fn call_site ( & self ) -> span {
234
+ match * self . backtrace {
235
+ Some ( @ExpandedFrom ( CallInfo { call_site : cs, _} ) ) => cs,
236
+ None => self . bug ( "missing top span" )
255
237
}
256
- fn print_backtrace ( & self ) { }
257
- fn backtrace ( & self ) -> Option < @ExpnInfo > { * self . backtrace }
258
- fn mod_push ( & self , i : ast:: ident ) { self . mod_path . push ( i) ; }
259
- fn mod_pop ( & self ) { self . mod_path . pop ( ) ; }
260
- fn mod_path ( & self ) -> ~[ ast:: ident ] { copy * self . mod_path }
261
- fn bt_push ( & self , ei : codemap:: ExpnInfo ) {
262
- match ei {
263
- ExpandedFrom ( CallInfo { call_site : cs, callee : ref callee} ) => {
238
+ }
239
+ fn print_backtrace ( & self ) { }
240
+ fn backtrace ( & self ) -> Option < @ExpnInfo > { * self . backtrace }
241
+ fn mod_push ( & self , i : ast:: ident ) { self . mod_path . push ( i) ; }
242
+ fn mod_pop ( & self ) { self . mod_path . pop ( ) ; }
243
+ fn mod_path ( & self ) -> ~[ ast:: ident ] { copy * self . mod_path }
244
+ fn bt_push ( & self , ei : codemap:: ExpnInfo ) {
245
+ match ei {
246
+ ExpandedFrom ( CallInfo { call_site : cs, callee : ref callee} ) => {
264
247
* self . backtrace =
265
248
Some ( @ExpandedFrom ( CallInfo {
266
249
call_site : span { lo : cs. lo , hi : cs. hi ,
267
250
expn_info : * self . backtrace } ,
268
251
callee : copy * callee} ) ) ;
269
- }
270
252
}
271
253
}
272
- fn bt_pop ( & self ) {
273
- match * self . backtrace {
274
- Some ( @ExpandedFrom ( CallInfo {
275
- call_site : span { expn_info : prev, _} , _
276
- } ) ) => {
254
+ }
255
+ fn bt_pop ( & self ) {
256
+ match * self . backtrace {
257
+ Some ( @ExpandedFrom (
258
+ CallInfo {
259
+ call_site : span { expn_info : prev, _} , _
260
+ } ) ) => {
277
261
* self . backtrace = prev
278
- }
279
- _ => self . bug ( "tried to pop without a push" )
280
262
}
263
+ _ => self . bug ( "tried to pop without a push" )
281
264
}
282
- fn span_fatal ( & self , sp : span , msg : & str ) -> ! {
283
- self . print_backtrace ( ) ;
284
- self . parse_sess . span_diagnostic . span_fatal ( sp, msg) ;
285
- }
286
- fn span_err ( & self , sp : span , msg : & str ) {
287
- self . print_backtrace ( ) ;
288
- self . parse_sess . span_diagnostic . span_err ( sp, msg) ;
289
- }
290
- fn span_warn ( & self , sp : span , msg : & str ) {
291
- self . print_backtrace ( ) ;
292
- self . parse_sess . span_diagnostic . span_warn ( sp, msg) ;
293
- }
294
- fn span_unimpl ( & self , sp : span , msg : & str ) -> ! {
295
- self . print_backtrace ( ) ;
296
- self . parse_sess . span_diagnostic . span_unimpl ( sp, msg) ;
297
- }
298
- fn span_bug ( & self , sp : span , msg : & str ) -> ! {
299
- self . print_backtrace ( ) ;
300
- self . parse_sess . span_diagnostic . span_bug ( sp, msg) ;
301
- }
302
- fn bug ( & self , msg : & str ) -> ! {
303
- self . print_backtrace ( ) ;
304
- self . parse_sess . span_diagnostic . handler ( ) . bug ( msg) ;
305
- }
306
- fn next_id ( & self ) -> ast:: node_id {
307
- return parse:: next_node_id ( self . parse_sess ) ;
308
- }
309
- fn trace_macros ( & self ) -> bool {
310
- * self . trace_mac
311
- }
312
- fn set_trace_macros ( & self , x : bool ) {
313
- * self . trace_mac = x
314
- }
315
- fn str_of ( & self , id : ast:: ident ) -> ~str {
316
- copy * self . parse_sess . interner . get ( id)
317
- }
318
- fn ident_of ( & self , st : & str ) -> ast:: ident {
319
- self . parse_sess . interner . intern ( st)
320
- }
321
265
}
322
- let imp: @CtxtRepr = @CtxtRepr {
323
- parse_sess : parse_sess,
324
- cfg : cfg,
325
- backtrace : @mut None ,
326
- mod_path : @mut ~[ ] ,
327
- trace_mac : @mut false
328
- } ;
329
- ( ( imp) as @ext_ctxt )
266
+ fn span_fatal ( & self , sp : span , msg : & str ) -> ! {
267
+ self . print_backtrace ( ) ;
268
+ self . parse_sess . span_diagnostic . span_fatal ( sp, msg) ;
269
+ }
270
+ fn span_err ( & self , sp : span , msg : & str ) {
271
+ self . print_backtrace ( ) ;
272
+ self . parse_sess . span_diagnostic . span_err ( sp, msg) ;
273
+ }
274
+ fn span_warn ( & self , sp : span , msg : & str ) {
275
+ self . print_backtrace ( ) ;
276
+ self . parse_sess . span_diagnostic . span_warn ( sp, msg) ;
277
+ }
278
+ fn span_unimpl ( & self , sp : span , msg : & str ) -> ! {
279
+ self . print_backtrace ( ) ;
280
+ self . parse_sess . span_diagnostic . span_unimpl ( sp, msg) ;
281
+ }
282
+ fn span_bug ( & self , sp : span , msg : & str ) -> ! {
283
+ self . print_backtrace ( ) ;
284
+ self . parse_sess . span_diagnostic . span_bug ( sp, msg) ;
285
+ }
286
+ fn bug ( & self , msg : & str ) -> ! {
287
+ self . print_backtrace ( ) ;
288
+ self . parse_sess . span_diagnostic . handler ( ) . bug ( msg) ;
289
+ }
290
+ fn next_id ( & self ) -> ast:: node_id {
291
+ parse:: next_node_id ( self . parse_sess )
292
+ }
293
+ fn trace_macros ( & self ) -> bool {
294
+ * self . trace_mac
295
+ }
296
+ fn set_trace_macros ( & self , x : bool ) {
297
+ * self . trace_mac = x
298
+ }
299
+ fn str_of ( & self , id : ast:: ident ) -> ~str {
300
+ copy * self . parse_sess . interner . get ( id)
301
+ }
302
+ fn ident_of ( & self , st : & str ) -> ast:: ident {
303
+ self . parse_sess . interner . intern ( st)
304
+ }
330
305
}
331
306
332
- pub fn expr_to_str ( cx : @ext_ctxt , expr : @ast:: expr , err_msg : ~str ) -> ~str {
307
+ pub fn expr_to_str ( cx : @ExtCtxt , expr : @ast:: expr , err_msg : ~str ) -> ~str {
333
308
match expr. node {
334
309
ast:: expr_lit( l) => match l. node {
335
310
ast:: lit_str( s) => copy * s,
@@ -339,7 +314,7 @@ pub fn expr_to_str(cx: @ext_ctxt, expr: @ast::expr, err_msg: ~str) -> ~str {
339
314
}
340
315
}
341
316
342
- pub fn expr_to_ident ( cx : @ext_ctxt ,
317
+ pub fn expr_to_ident ( cx : @ExtCtxt ,
343
318
expr : @ast:: expr ,
344
319
err_msg : & str ) -> ast:: ident {
345
320
match expr. node {
@@ -353,14 +328,14 @@ pub fn expr_to_ident(cx: @ext_ctxt,
353
328
}
354
329
}
355
330
356
- pub fn check_zero_tts ( cx : @ext_ctxt , sp : span , tts : & [ ast:: token_tree ] ,
331
+ pub fn check_zero_tts ( cx : @ExtCtxt , sp : span , tts : & [ ast:: token_tree ] ,
357
332
name : & str ) {
358
333
if tts. len ( ) != 0 {
359
334
cx. span_fatal ( sp, fmt ! ( "%s takes no arguments" , name) ) ;
360
335
}
361
336
}
362
337
363
- pub fn get_single_str_from_tts ( cx : @ext_ctxt ,
338
+ pub fn get_single_str_from_tts ( cx : @ExtCtxt ,
364
339
sp : span ,
365
340
tts : & [ ast:: token_tree ] ,
366
341
name : & str ) -> ~str {
@@ -375,7 +350,7 @@ pub fn get_single_str_from_tts(cx: @ext_ctxt,
375
350
}
376
351
}
377
352
378
- pub fn get_exprs_from_tts ( cx : @ext_ctxt , tts : & [ ast:: token_tree ] )
353
+ pub fn get_exprs_from_tts ( cx : @ExtCtxt , tts : & [ ast:: token_tree ] )
379
354
-> ~[ @ast:: expr ] {
380
355
let p = parse:: new_parser_from_tts ( cx. parse_sess ( ) ,
381
356
cx. cfg ( ) ,
0 commit comments