@@ -38,91 +38,63 @@ pub struct MacroDef {
38
38
pub type ItemDecorator =
39
39
fn ( & ExtCtxt , Span , @ast:: MetaItem , ~[ @ast:: Item ] ) -> ~[ @ast:: Item ] ;
40
40
41
- pub struct SyntaxExpanderTT {
42
- expander : SyntaxExpanderTTExpander ,
41
+ pub struct BasicMacroExpander {
42
+ expander : MacroExpanderFn ,
43
43
span : Option < Span >
44
44
}
45
45
46
- pub trait SyntaxExpanderTTTrait {
46
+ pub trait MacroExpander {
47
47
fn expand ( & self ,
48
48
ecx : & mut ExtCtxt ,
49
49
span : Span ,
50
- token_tree : & [ ast:: TokenTree ] ,
51
- context : ast:: SyntaxContext )
50
+ token_tree : & [ ast:: TokenTree ] )
52
51
-> MacResult ;
53
52
}
54
53
55
- pub type SyntaxExpanderTTFunNoCtxt =
54
+ pub type MacroExpanderFn =
56
55
fn ( ecx : & mut ExtCtxt , span : codemap:: Span , token_tree : & [ ast:: TokenTree ] )
57
56
-> MacResult ;
58
57
59
- enum SyntaxExpanderTTExpander {
60
- SyntaxExpanderTTExpanderWithoutContext ( SyntaxExpanderTTFunNoCtxt ) ,
61
- }
62
-
63
- impl SyntaxExpanderTTTrait for SyntaxExpanderTT {
58
+ impl MacroExpander for BasicMacroExpander {
64
59
fn expand ( & self ,
65
60
ecx : & mut ExtCtxt ,
66
61
span : Span ,
67
- token_tree : & [ ast:: TokenTree ] ,
68
- _: ast:: SyntaxContext )
62
+ token_tree : & [ ast:: TokenTree ] )
69
63
-> MacResult {
70
- match self . expander {
71
- SyntaxExpanderTTExpanderWithoutContext ( f) => {
72
- f ( ecx, span, token_tree)
73
- }
74
- }
64
+ ( self . expander ) ( ecx, span, token_tree)
75
65
}
76
66
}
77
67
78
- enum SyntaxExpanderTTItemExpander {
79
- SyntaxExpanderTTItemExpanderWithContext ( SyntaxExpanderTTItemFun ) ,
80
- SyntaxExpanderTTItemExpanderWithoutContext ( SyntaxExpanderTTItemFunNoCtxt ) ,
81
- }
82
-
83
- pub struct SyntaxExpanderTTItem {
84
- expander : SyntaxExpanderTTItemExpander ,
68
+ pub struct BasicIdentMacroExpander {
69
+ expander : IdentMacroExpanderFn ,
85
70
span : Option < Span >
86
71
}
87
72
88
- pub trait SyntaxExpanderTTItemTrait {
73
+ pub trait IdentMacroExpander {
89
74
fn expand ( & self ,
90
75
cx : & mut ExtCtxt ,
91
76
sp : Span ,
92
77
ident : ast:: Ident ,
93
- token_tree : ~[ ast:: TokenTree ] ,
94
- context : ast:: SyntaxContext )
78
+ token_tree : ~[ ast:: TokenTree ] )
95
79
-> MacResult ;
96
80
}
97
81
98
- impl SyntaxExpanderTTItemTrait for SyntaxExpanderTTItem {
82
+ impl IdentMacroExpander for BasicIdentMacroExpander {
99
83
fn expand ( & self ,
100
84
cx : & mut ExtCtxt ,
101
85
sp : Span ,
102
86
ident : ast:: Ident ,
103
- token_tree : ~[ ast:: TokenTree ] ,
104
- context : ast:: SyntaxContext )
87
+ token_tree : ~[ ast:: TokenTree ] )
105
88
-> MacResult {
106
- match self . expander {
107
- SyntaxExpanderTTItemExpanderWithContext ( fun) => {
108
- fun ( cx, sp, ident, token_tree, context)
109
- }
110
- SyntaxExpanderTTItemExpanderWithoutContext ( fun) => {
111
- fun ( cx, sp, ident, token_tree)
112
- }
113
- }
89
+ ( self . expander ) ( cx, sp, ident, token_tree)
114
90
}
115
91
}
116
92
117
- pub type SyntaxExpanderTTItemFun =
118
- fn ( & mut ExtCtxt , Span , ast:: Ident , ~[ ast:: TokenTree ] , ast:: SyntaxContext )
119
- -> MacResult ;
120
-
121
- pub type SyntaxExpanderTTItemFunNoCtxt =
93
+ pub type IdentMacroExpanderFn =
122
94
fn ( & mut ExtCtxt , Span , ast:: Ident , ~[ ast:: TokenTree ] ) -> MacResult ;
123
95
124
96
pub type MacroCrateRegistrationFun =
125
- extern "Rust" fn ( |ast:: Name , SyntaxExtension |) ;
97
+ fn ( |ast:: Name , SyntaxExtension |) ;
126
98
127
99
pub trait AnyMacro {
128
100
fn make_expr ( & self ) -> @ast:: Expr ;
@@ -153,7 +125,7 @@ pub enum SyntaxExtension {
153
125
ItemDecorator ( ItemDecorator ) ,
154
126
155
127
// Token-tree expanders
156
- NormalTT ( ~SyntaxExpanderTTTrait : ' static , Option < Span > ) ,
128
+ NormalTT ( ~MacroExpander : ' static , Option < Span > ) ,
157
129
158
130
// An IdentTT is a macro that has an
159
131
// identifier in between the name of the
@@ -163,7 +135,7 @@ pub enum SyntaxExtension {
163
135
164
136
// perhaps macro_rules! will lose its odd special identifier argument,
165
137
// and this can go away also
166
- IdentTT ( ~SyntaxExpanderTTItemTrait : ' static , Option < Span > ) ,
138
+ IdentTT ( ~IdentMacroExpander : ' static , Option < Span > ) ,
167
139
}
168
140
169
141
pub struct BlockInfo {
@@ -192,102 +164,100 @@ pub type RenameList = ~[(ast::Ident,Name)];
192
164
// AST nodes into full ASTs
193
165
pub fn syntax_expander_table ( ) -> SyntaxEnv {
194
166
// utility function to simplify creating NormalTT syntax extensions
195
- fn builtin_normal_tt_no_ctxt ( f : SyntaxExpanderTTFunNoCtxt )
196
- -> SyntaxExtension {
197
- NormalTT ( ~SyntaxExpanderTT {
198
- expander : SyntaxExpanderTTExpanderWithoutContext ( f) ,
199
- span : None ,
200
- } ,
201
- None )
167
+ fn builtin_normal_expander ( f : MacroExpanderFn ) -> SyntaxExtension {
168
+ NormalTT ( ~BasicMacroExpander {
169
+ expander : f,
170
+ span : None ,
171
+ } ,
172
+ None )
202
173
}
203
174
204
175
let mut syntax_expanders = SyntaxEnv :: new ( ) ;
205
176
syntax_expanders. insert ( intern ( & "macro_rules" ) ,
206
- IdentTT ( ~SyntaxExpanderTTItem {
207
- expander : SyntaxExpanderTTItemExpanderWithContext (
208
- ext:: tt:: macro_rules:: add_new_extension) ,
177
+ IdentTT ( ~BasicIdentMacroExpander {
178
+ expander : ext:: tt:: macro_rules:: add_new_extension,
209
179
span : None ,
210
180
} ,
211
181
None ) ) ;
212
182
syntax_expanders. insert ( intern ( & "fmt" ) ,
213
- builtin_normal_tt_no_ctxt (
183
+ builtin_normal_expander (
214
184
ext:: fmt:: expand_syntax_ext) ) ;
215
185
syntax_expanders. insert ( intern ( & "format_args" ) ,
216
- builtin_normal_tt_no_ctxt (
186
+ builtin_normal_expander (
217
187
ext:: format:: expand_args) ) ;
218
188
syntax_expanders. insert ( intern ( & "env" ) ,
219
- builtin_normal_tt_no_ctxt (
189
+ builtin_normal_expander (
220
190
ext:: env:: expand_env) ) ;
221
191
syntax_expanders. insert ( intern ( & "option_env" ) ,
222
- builtin_normal_tt_no_ctxt (
192
+ builtin_normal_expander (
223
193
ext:: env:: expand_option_env) ) ;
224
194
syntax_expanders. insert ( intern ( "bytes" ) ,
225
- builtin_normal_tt_no_ctxt (
195
+ builtin_normal_expander (
226
196
ext:: bytes:: expand_syntax_ext) ) ;
227
197
syntax_expanders. insert ( intern ( "concat_idents" ) ,
228
- builtin_normal_tt_no_ctxt (
198
+ builtin_normal_expander (
229
199
ext:: concat_idents:: expand_syntax_ext) ) ;
230
200
syntax_expanders. insert ( intern ( "concat" ) ,
231
- builtin_normal_tt_no_ctxt (
201
+ builtin_normal_expander (
232
202
ext:: concat:: expand_syntax_ext) ) ;
233
203
syntax_expanders. insert ( intern ( & "log_syntax" ) ,
234
- builtin_normal_tt_no_ctxt (
204
+ builtin_normal_expander (
235
205
ext:: log_syntax:: expand_syntax_ext) ) ;
236
206
syntax_expanders. insert ( intern ( & "deriving" ) ,
237
207
ItemDecorator ( ext:: deriving:: expand_meta_deriving) ) ;
238
208
239
209
// Quasi-quoting expanders
240
210
syntax_expanders. insert ( intern ( & "quote_tokens" ) ,
241
- builtin_normal_tt_no_ctxt (
211
+ builtin_normal_expander (
242
212
ext:: quote:: expand_quote_tokens) ) ;
243
213
syntax_expanders. insert ( intern ( & "quote_expr" ) ,
244
- builtin_normal_tt_no_ctxt (
214
+ builtin_normal_expander (
245
215
ext:: quote:: expand_quote_expr) ) ;
246
216
syntax_expanders. insert ( intern ( & "quote_ty" ) ,
247
- builtin_normal_tt_no_ctxt (
217
+ builtin_normal_expander (
248
218
ext:: quote:: expand_quote_ty) ) ;
249
219
syntax_expanders. insert ( intern ( & "quote_item" ) ,
250
- builtin_normal_tt_no_ctxt (
220
+ builtin_normal_expander (
251
221
ext:: quote:: expand_quote_item) ) ;
252
222
syntax_expanders. insert ( intern ( & "quote_pat" ) ,
253
- builtin_normal_tt_no_ctxt (
223
+ builtin_normal_expander (
254
224
ext:: quote:: expand_quote_pat) ) ;
255
225
syntax_expanders. insert ( intern ( & "quote_stmt" ) ,
256
- builtin_normal_tt_no_ctxt (
226
+ builtin_normal_expander (
257
227
ext:: quote:: expand_quote_stmt) ) ;
258
228
259
229
syntax_expanders. insert ( intern ( & "line" ) ,
260
- builtin_normal_tt_no_ctxt (
230
+ builtin_normal_expander (
261
231
ext:: source_util:: expand_line) ) ;
262
232
syntax_expanders. insert ( intern ( & "col" ) ,
263
- builtin_normal_tt_no_ctxt (
233
+ builtin_normal_expander (
264
234
ext:: source_util:: expand_col) ) ;
265
235
syntax_expanders. insert ( intern ( & "file" ) ,
266
- builtin_normal_tt_no_ctxt (
236
+ builtin_normal_expander (
267
237
ext:: source_util:: expand_file) ) ;
268
238
syntax_expanders. insert ( intern ( & "stringify" ) ,
269
- builtin_normal_tt_no_ctxt (
239
+ builtin_normal_expander (
270
240
ext:: source_util:: expand_stringify) ) ;
271
241
syntax_expanders. insert ( intern ( & "include" ) ,
272
- builtin_normal_tt_no_ctxt (
242
+ builtin_normal_expander (
273
243
ext:: source_util:: expand_include) ) ;
274
244
syntax_expanders. insert ( intern ( & "include_str" ) ,
275
- builtin_normal_tt_no_ctxt (
245
+ builtin_normal_expander (
276
246
ext:: source_util:: expand_include_str) ) ;
277
247
syntax_expanders. insert ( intern ( & "include_bin" ) ,
278
- builtin_normal_tt_no_ctxt (
248
+ builtin_normal_expander (
279
249
ext:: source_util:: expand_include_bin) ) ;
280
250
syntax_expanders. insert ( intern ( & "module_path" ) ,
281
- builtin_normal_tt_no_ctxt (
251
+ builtin_normal_expander (
282
252
ext:: source_util:: expand_mod) ) ;
283
253
syntax_expanders. insert ( intern ( & "asm" ) ,
284
- builtin_normal_tt_no_ctxt (
254
+ builtin_normal_expander (
285
255
ext:: asm:: expand_asm) ) ;
286
256
syntax_expanders. insert ( intern ( & "cfg" ) ,
287
- builtin_normal_tt_no_ctxt (
257
+ builtin_normal_expander (
288
258
ext:: cfg:: expand_cfg) ) ;
289
259
syntax_expanders. insert ( intern ( & "trace_macros" ) ,
290
- builtin_normal_tt_no_ctxt (
260
+ builtin_normal_expander (
291
261
ext:: trace_macros:: expand_trace_macros) ) ;
292
262
syntax_expanders
293
263
}
0 commit comments