@@ -34,8 +34,9 @@ use syntax::codemap::Span;
34
34
use syntax:: ext:: base:: * ;
35
35
use syntax:: ext:: base;
36
36
use syntax:: ext:: proc_macro_shim:: build_block_emitter;
37
- use syntax:: parse:: token:: { self , Token , gensym_ident , str_to_ident } ;
37
+ use syntax:: parse:: token:: { self , Token } ;
38
38
use syntax:: print:: pprust;
39
+ use syntax:: symbol:: Symbol ;
39
40
use syntax:: tokenstream:: { TokenTree , TokenStream } ;
40
41
41
42
// ____________________________________________________________________________________________
@@ -124,7 +125,7 @@ fn qquote_iter<'cx>(cx: &'cx mut ExtCtxt, depth: i64, ts: TokenStream) -> (Bindi
124
125
} // produce an error or something first
125
126
let exp = vec ! [ exp. unwrap( ) . to_owned( ) ] ;
126
127
debug ! ( "RHS: {:?}" , exp. clone( ) ) ;
127
- let new_id = gensym_ident ( "tmp" ) ;
128
+ let new_id = Ident :: with_empty_ctxt ( Symbol :: gensym ( "tmp" ) ) ;
128
129
debug ! ( "RHS TS: {:?}" , TokenStream :: from_tts( exp. clone( ) ) ) ;
129
130
debug ! ( "RHS TS TT: {:?}" , TokenStream :: from_tts( exp. clone( ) ) . to_vec( ) ) ;
130
131
bindings. push ( ( new_id, TokenStream :: from_tts ( exp) ) ) ;
@@ -179,7 +180,7 @@ fn unravel_concats(tss: Vec<TokenStream>) -> TokenStream {
179
180
} ;
180
181
181
182
while let Some ( ts) = pushes. pop ( ) {
182
- output = build_fn_call ( str_to_ident ( "concat" ) ,
183
+ output = build_fn_call ( Ident :: from_str ( "concat" ) ,
183
184
concat ( concat ( ts,
184
185
from_tokens ( vec ! [ Token :: Comma ] ) ) ,
185
186
output) ) ;
@@ -209,18 +210,19 @@ fn convert_complex_tts<'cx>(cx: &'cx mut ExtCtxt, tts: Vec<QTT>) -> (Bindings, T
209
210
// FIXME handle sequence repetition tokens
210
211
QTT :: QDL ( qdl) => {
211
212
debug ! ( " QDL: {:?} " , qdl. tts) ;
212
- let new_id = gensym_ident ( "qdl_tmp" ) ;
213
+ let new_id = Ident :: with_empty_ctxt ( Symbol :: gensym ( "qdl_tmp" ) ) ;
213
214
let mut cct_rec = convert_complex_tts ( cx, qdl. tts ) ;
214
215
bindings. append ( & mut cct_rec. 0 ) ;
215
216
bindings. push ( ( new_id, cct_rec. 1 ) ) ;
216
217
217
218
let sep = build_delim_tok ( qdl. delim ) ;
218
219
219
- pushes. push ( build_mod_call ( vec ! [ str_to_ident( "proc_macro_tokens" ) ,
220
- str_to_ident( "build" ) ,
221
- str_to_ident( "build_delimited" ) ] ,
222
- concat ( from_tokens ( vec ! [ Token :: Ident ( new_id) ] ) ,
223
- concat ( lex ( "," ) , sep) ) ) ) ;
220
+ pushes. push ( build_mod_call (
221
+ vec ! [ Ident :: from_str( "proc_macro_tokens" ) ,
222
+ Ident :: from_str( "build" ) ,
223
+ Ident :: from_str( "build_delimited" ) ] ,
224
+ concat ( from_tokens ( vec ! [ Token :: Ident ( new_id) ] ) , concat ( lex ( "," ) , sep) ) ,
225
+ ) ) ;
224
226
}
225
227
QTT :: QIdent ( t) => {
226
228
pushes. push ( TokenStream :: from_tts ( vec ! [ t] ) ) ;
@@ -250,13 +252,13 @@ fn unravel(binds: Bindings) -> TokenStream {
250
252
251
253
/// Checks if the Ident is `unquote`.
252
254
fn is_unquote ( id : Ident ) -> bool {
253
- let qq = str_to_ident ( "unquote" ) ;
255
+ let qq = Ident :: from_str ( "unquote" ) ;
254
256
id. name == qq. name // We disregard context; unquote is _reserved_
255
257
}
256
258
257
259
/// Checks if the Ident is `quote`.
258
260
fn is_qquote ( id : Ident ) -> bool {
259
- let qq = str_to_ident ( "qquote" ) ;
261
+ let qq = Ident :: from_str ( "qquote" ) ;
260
262
id. name == qq. name // We disregard context; qquote is _reserved_
261
263
}
262
264
@@ -266,7 +268,8 @@ mod int_build {
266
268
267
269
use syntax:: ast:: { self , Ident } ;
268
270
use syntax:: codemap:: { DUMMY_SP } ;
269
- use syntax:: parse:: token:: { self , Token , keywords, str_to_ident} ;
271
+ use syntax:: parse:: token:: { self , Token , Lit } ;
272
+ use syntax:: symbol:: keywords;
270
273
use syntax:: tokenstream:: { TokenTree , TokenStream } ;
271
274
272
275
// ____________________________________________________________________________________________
@@ -277,19 +280,19 @@ mod int_build {
277
280
build_paren_delimited ( build_vec ( build_token_tt ( t) ) ) )
278
281
}
279
282
280
- pub fn emit_lit ( l : token :: Lit , n : Option < ast:: Name > ) -> TokenStream {
283
+ pub fn emit_lit ( l : Lit , n : Option < ast:: Name > ) -> TokenStream {
281
284
let suf = match n {
282
- Some ( n) => format ! ( "Some(ast::Name({}))" , n. 0 ) ,
285
+ Some ( n) => format ! ( "Some(ast::Name({}))" , n. as_u32 ( ) ) ,
283
286
None => "None" . to_string ( ) ,
284
287
} ;
285
288
286
289
let lit = match l {
287
- token :: Lit :: Byte ( n) => format ! ( "Lit::Byte(token ::intern(\" {}\" ))" , n. to_string( ) ) ,
288
- token :: Lit :: Char ( n) => format ! ( "Lit::Char(token ::intern(\" {}\" ))" , n. to_string( ) ) ,
289
- token :: Lit :: Integer ( n) => format ! ( "Lit::Integer(token ::intern(\" {}\" ))" , n. to_string( ) ) ,
290
- token :: Lit :: Float ( n) => format ! ( "Lit::Float(token ::intern(\" {}\" ))" , n. to_string( ) ) ,
291
- token :: Lit :: Str_ ( n) => format ! ( "Lit::Str_(token ::intern(\" {}\" ))" , n. to_string( ) ) ,
292
- token :: Lit :: ByteStr ( n) => format ! ( "Lit::ByteStr(token ::intern(\" {}\" ))" , n. to_string( ) ) ,
290
+ Lit :: Byte ( n) => format ! ( "Lit::Byte(Symbol ::intern(\" {}\" ))" , n. to_string( ) ) ,
291
+ Lit :: Char ( n) => format ! ( "Lit::Char(Symbol ::intern(\" {}\" ))" , n. to_string( ) ) ,
292
+ Lit :: Float ( n) => format ! ( "Lit::Float(Symbol ::intern(\" {}\" ))" , n. to_string( ) ) ,
293
+ Lit :: Str_ ( n) => format ! ( "Lit::Str_(Symbol ::intern(\" {}\" ))" , n. to_string( ) ) ,
294
+ Lit :: Integer ( n) => format ! ( "Lit::Integer(Symbol ::intern(\" {}\" ))" , n. to_string( ) ) ,
295
+ Lit :: ByteStr ( n) => format ! ( "Lit::ByteStr(Symbol ::intern(\" {}\" ))" , n. to_string( ) ) ,
293
296
_ => panic ! ( "Unsupported literal" ) ,
294
297
} ;
295
298
@@ -388,9 +391,10 @@ mod int_build {
388
391
Token :: Underscore => lex ( "_" ) ,
389
392
Token :: Literal ( lit, sfx) => emit_lit ( lit, sfx) ,
390
393
// fix ident expansion information... somehow
391
- Token :: Ident ( ident) => lex ( & format ! ( "Token::Ident(str_to_ident(\" {}\" ))" , ident. name) ) ,
392
- Token :: Lifetime ( ident) => lex ( & format ! ( "Token::Ident(str_to_ident(\" {}\" ))" ,
393
- ident. name) ) ,
394
+ Token :: Ident ( ident) =>
395
+ lex ( & format ! ( "Token::Ident(Ident::from_str(\" {}\" ))" , ident. name) ) ,
396
+ Token :: Lifetime ( ident) =>
397
+ lex ( & format ! ( "Token::Ident(Ident::from_str(\" {}\" ))" , ident. name) ) ,
394
398
_ => panic ! ( "Unhandled case!" ) ,
395
399
}
396
400
}
@@ -408,7 +412,7 @@ mod int_build {
408
412
409
413
/// Takes `input` and returns `vec![input]`.
410
414
pub fn build_vec ( ts : TokenStream ) -> TokenStream {
411
- build_mac_call ( str_to_ident ( "vec" ) , ts)
415
+ build_mac_call ( Ident :: from_str ( "vec" ) , ts)
412
416
// tts.clone().to_owned()
413
417
}
414
418
0 commit comments