@@ -401,16 +401,6 @@ fn mk_ident(cx: &ExtCtxt, sp: Span, ident: ast::Ident) -> @ast::Expr {
401
401
vec ! ( e_str) )
402
402
}
403
403
404
- fn mk_ast_path ( cx : & ExtCtxt , sp : Span , name : & str ) -> @ast:: Expr {
405
- let idents = vec ! ( id_ext( "syntax" ) , id_ext( "ast" ) , id_ext( name) ) ;
406
- cx. expr_path ( cx. path_global ( sp, idents) )
407
- }
408
-
409
- fn mk_token_path ( cx : & ExtCtxt , sp : Span , name : & str ) -> @ast:: Expr {
410
- let idents = vec ! ( id_ext( "syntax" ) , id_ext( "parse" ) , id_ext( "token" ) , id_ext( name) ) ;
411
- cx. expr_path ( cx. path_global ( sp, idents) )
412
- }
413
-
414
404
fn mk_binop ( cx : & ExtCtxt , sp : Span , bop : token:: BinOp ) -> @ast:: Expr {
415
405
let name = match bop {
416
406
PLUS => "PLUS" ,
@@ -424,96 +414,116 @@ fn mk_binop(cx: &ExtCtxt, sp: Span, bop: token::BinOp) -> @ast::Expr {
424
414
SHL => "SHL" ,
425
415
SHR => "SHR"
426
416
} ;
427
- mk_token_path ( cx , sp, name)
417
+ cx . expr_ident ( sp, id_ext ( name) )
428
418
}
429
419
430
420
fn mk_token ( cx : & ExtCtxt , sp : Span , tok : & token:: Token ) -> @ast:: Expr {
431
421
432
422
match * tok {
433
423
BINOP ( binop) => {
434
- return cx. expr_call ( sp, mk_token_path ( cx, sp, "BINOP" ) , vec ! ( mk_binop( cx, sp, binop) ) ) ;
424
+ return cx. expr_call_ident ( sp,
425
+ id_ext ( "BINOP" ) ,
426
+ vec ! ( mk_binop( cx, sp, binop) ) ) ;
435
427
}
436
428
BINOPEQ ( binop) => {
437
- return cx. expr_call ( sp, mk_token_path ( cx, sp, "BINOPEQ" ) ,
438
- vec ! ( mk_binop( cx, sp, binop) ) ) ;
429
+ return cx. expr_call_ident ( sp,
430
+ id_ext ( "BINOPEQ" ) ,
431
+ vec ! ( mk_binop( cx, sp, binop) ) ) ;
439
432
}
440
433
441
434
LIT_CHAR ( i) => {
442
435
let e_char = cx. expr_lit ( sp, ast:: LitChar ( i) ) ;
443
436
444
- return cx. expr_call ( sp, mk_token_path ( cx , sp , "LIT_CHAR" ) , vec ! ( e_char) ) ;
437
+ return cx. expr_call_ident ( sp, id_ext ( "LIT_CHAR" ) , vec ! ( e_char) ) ;
445
438
}
446
439
447
440
LIT_INT ( i, ity) => {
448
441
let s_ity = match ity {
449
- ast:: TyI => "TyI" ,
450
- ast:: TyI8 => "TyI8" ,
451
- ast:: TyI16 => "TyI16" ,
452
- ast:: TyI32 => "TyI32" ,
453
- ast:: TyI64 => "TyI64"
442
+ ast:: TyI => "TyI" . to_string ( ) ,
443
+ ast:: TyI8 => "TyI8" . to_string ( ) ,
444
+ ast:: TyI16 => "TyI16" . to_string ( ) ,
445
+ ast:: TyI32 => "TyI32" . to_string ( ) ,
446
+ ast:: TyI64 => "TyI64" . to_string ( )
454
447
} ;
455
- let e_ity = mk_ast_path ( cx, sp, s_ity) ;
448
+ let e_ity = cx. expr_ident ( sp, id_ext ( s_ity. as_slice ( ) ) ) ;
449
+
456
450
let e_i64 = cx. expr_lit ( sp, ast:: LitInt ( i, ast:: TyI64 ) ) ;
457
- return cx. expr_call ( sp, mk_token_path ( cx, sp, "LIT_INT" ) , vec ! ( e_i64, e_ity) ) ;
451
+
452
+ return cx. expr_call_ident ( sp,
453
+ id_ext ( "LIT_INT" ) ,
454
+ vec ! ( e_i64, e_ity) ) ;
458
455
}
459
456
460
457
LIT_UINT ( u, uty) => {
461
458
let s_uty = match uty {
462
- ast:: TyU => "TyU" ,
463
- ast:: TyU8 => "TyU8" ,
464
- ast:: TyU16 => "TyU16" ,
465
- ast:: TyU32 => "TyU32" ,
466
- ast:: TyU64 => "TyU64"
459
+ ast:: TyU => "TyU" . to_string ( ) ,
460
+ ast:: TyU8 => "TyU8" . to_string ( ) ,
461
+ ast:: TyU16 => "TyU16" . to_string ( ) ,
462
+ ast:: TyU32 => "TyU32" . to_string ( ) ,
463
+ ast:: TyU64 => "TyU64" . to_string ( )
467
464
} ;
468
- let e_uty = mk_ast_path ( cx, sp, s_uty) ;
465
+ let e_uty = cx. expr_ident ( sp, id_ext ( s_uty. as_slice ( ) ) ) ;
466
+
469
467
let e_u64 = cx. expr_lit ( sp, ast:: LitUint ( u, ast:: TyU64 ) ) ;
470
- return cx. expr_call ( sp, mk_token_path ( cx, sp, "LIT_UINT" ) , vec ! ( e_u64, e_uty) ) ;
468
+
469
+ return cx. expr_call_ident ( sp,
470
+ id_ext ( "LIT_UINT" ) ,
471
+ vec ! ( e_u64, e_uty) ) ;
471
472
}
472
473
473
474
LIT_INT_UNSUFFIXED ( i) => {
474
475
let e_i64 = cx. expr_lit ( sp, ast:: LitInt ( i, ast:: TyI64 ) ) ;
475
- return cx. expr_call ( sp, mk_token_path ( cx, sp, "LIT_INT_UNSUFFIXED" ) , vec ! ( e_i64) ) ;
476
+
477
+ return cx. expr_call_ident ( sp,
478
+ id_ext ( "LIT_INT_UNSUFFIXED" ) ,
479
+ vec ! ( e_i64) ) ;
476
480
}
477
481
478
482
LIT_FLOAT ( fident, fty) => {
479
483
let s_fty = match fty {
480
- ast:: TyF32 => "TyF32" ,
481
- ast:: TyF64 => "TyF64" ,
482
- ast:: TyF128 => "TyF128"
484
+ ast:: TyF32 => "TyF32" . to_string ( ) ,
485
+ ast:: TyF64 => "TyF64" . to_string ( ) ,
486
+ ast:: TyF128 => "TyF128" . to_string ( )
483
487
} ;
484
- let e_fty = mk_ast_path ( cx, sp, s_fty) ;
488
+ let e_fty = cx. expr_ident ( sp, id_ext ( s_fty. as_slice ( ) ) ) ;
489
+
485
490
let e_fident = mk_ident ( cx, sp, fident) ;
486
- return cx. expr_call ( sp, mk_token_path ( cx, sp, "LIT_FLOAT" ) , vec ! ( e_fident, e_fty) ) ;
491
+
492
+ return cx. expr_call_ident ( sp,
493
+ id_ext ( "LIT_FLOAT" ) ,
494
+ vec ! ( e_fident, e_fty) ) ;
487
495
}
488
496
489
497
LIT_STR ( ident) => {
490
- return cx. expr_call ( sp,
491
- mk_token_path ( cx , sp , "LIT_STR" ) ,
492
- vec ! ( mk_ident( cx, sp, ident) ) ) ;
498
+ return cx. expr_call_ident ( sp,
499
+ id_ext ( "LIT_STR" ) ,
500
+ vec ! ( mk_ident( cx, sp, ident) ) ) ;
493
501
}
494
502
495
503
LIT_STR_RAW ( ident, n) => {
496
- return cx. expr_call ( sp,
497
- mk_token_path ( cx, sp, "LIT_STR_RAW" ) ,
498
- vec ! ( mk_ident( cx, sp, ident) , cx. expr_uint( sp, n) ) ) ;
504
+ return cx. expr_call_ident ( sp,
505
+ id_ext ( "LIT_STR_RAW" ) ,
506
+ vec ! ( mk_ident( cx, sp, ident) ,
507
+ cx. expr_uint( sp, n) ) ) ;
499
508
}
500
509
501
510
IDENT ( ident, b) => {
502
- return cx. expr_call ( sp,
503
- mk_token_path ( cx, sp, "IDENT" ) ,
504
- vec ! ( mk_ident( cx, sp, ident) , cx. expr_bool( sp, b) ) ) ;
511
+ return cx. expr_call_ident ( sp,
512
+ id_ext ( "IDENT" ) ,
513
+ vec ! ( mk_ident( cx, sp, ident) ,
514
+ cx. expr_bool( sp, b) ) ) ;
505
515
}
506
516
507
517
LIFETIME ( ident) => {
508
- return cx. expr_call ( sp,
509
- mk_token_path ( cx , sp , "LIFETIME" ) ,
510
- vec ! ( mk_ident( cx, sp, ident) ) ) ;
518
+ return cx. expr_call_ident ( sp,
519
+ id_ext ( "LIFETIME" ) ,
520
+ vec ! ( mk_ident( cx, sp, ident) ) ) ;
511
521
}
512
522
513
523
DOC_COMMENT ( ident) => {
514
- return cx. expr_call ( sp,
515
- mk_token_path ( cx , sp , "DOC_COMMENT" ) ,
516
- vec ! ( mk_ident( cx, sp, ident) ) ) ;
524
+ return cx. expr_call_ident ( sp,
525
+ id_ext ( "DOC_COMMENT" ) ,
526
+ vec ! ( mk_ident( cx, sp, ident) ) ) ;
517
527
}
518
528
519
529
INTERPOLATED ( _) => fail ! ( "quote! with interpolated token" ) ,
@@ -555,16 +565,19 @@ fn mk_token(cx: &ExtCtxt, sp: Span, tok: &token::Token) -> @ast::Expr {
555
565
EOF => "EOF" ,
556
566
_ => fail ! ( )
557
567
} ;
558
- mk_token_path ( cx , sp, name)
568
+ cx . expr_ident ( sp, id_ext ( name) )
559
569
}
560
570
571
+
561
572
fn mk_tt ( cx : & ExtCtxt , sp : Span , tt : & ast:: TokenTree ) -> Vec < @ast:: Stmt > {
573
+
562
574
match * tt {
575
+
563
576
ast:: TTTok ( sp, ref tok) => {
564
577
let e_sp = cx. expr_ident ( sp, id_ext ( "_sp" ) ) ;
565
- let e_tok = cx. expr_call ( sp,
566
- mk_ast_path ( cx , sp , "TTTok" ) ,
567
- vec ! ( e_sp, mk_token( cx, sp, tok) ) ) ;
578
+ let e_tok = cx. expr_call_ident ( sp,
579
+ id_ext ( "TTTok" ) ,
580
+ vec ! ( e_sp, mk_token( cx, sp, tok) ) ) ;
568
581
let e_push =
569
582
cx. expr_method_call ( sp,
570
583
cx. expr_ident ( sp, id_ext ( "tt" ) ) ,
@@ -682,6 +695,8 @@ fn expand_wrapper(cx: &ExtCtxt,
682
695
cx_expr : @ast:: Expr ,
683
696
expr : @ast:: Expr ) -> @ast:: Expr {
684
697
let uses = [
698
+ & [ "syntax" , "ast" ] ,
699
+ & [ "syntax" , "parse" , "token" ] ,
685
700
& [ "syntax" , "ext" , "quote" , "rt" ] ,
686
701
] . iter ( ) . map ( |path| {
687
702
let path = path. iter ( ) . map ( |s| s. to_string ( ) ) . collect ( ) ;
0 commit comments