@@ -385,19 +385,24 @@ fn parse_ty_postfix(orig_t: ast::ty_, p: parser, colons_before_params: bool,
385
385
expect ( p, token:: LT ) ;
386
386
} else if !colons_before_params && p. token == token:: LT {
387
387
p. bump ( ) ;
388
- } else { ret @spanned ( lo, p. last_span . hi , orig_t) ; }
388
+ } else {
389
+ ret @{ id : p. get_id ( ) ,
390
+ node : orig_t,
391
+ span : ast_util:: mk_sp ( lo, p. last_span . hi ) } ;
392
+ }
389
393
390
394
// If we're here, we have explicit type parameter instantiation.
391
395
let seq = parse_seq_to_gt ( some ( token:: COMMA ) , { |p| parse_ty ( p, false ) } ,
392
396
p) ;
393
397
394
398
alt orig_t {
395
399
ast : : ty_path ( pth, ann) {
396
- ret @spanned ( lo, p. last_span . hi ,
397
- ast:: ty_path ( @spanned ( lo, p. last_span . hi ,
398
- { global: pth. node . global ,
399
- idents: pth. node . idents ,
400
- types: seq} ) , ann) ) ;
400
+ ret @{ id : p. get_id ( ) ,
401
+ node : ast:: ty_path ( @spanned ( lo, p. last_span . hi ,
402
+ { global: pth. node . global ,
403
+ idents: pth. node . idents ,
404
+ types: seq} ) , ann) ,
405
+ span : ast_util:: mk_sp ( lo, p. last_span . hi ) } ;
401
406
}
402
407
_ { p. fatal ( "type parameter instantiation only allowed for paths" ) ; }
403
408
}
@@ -407,11 +412,17 @@ fn parse_ret_ty(p: parser) -> (ast::ret_style, @ast::ty) {
407
412
ret if eat ( p, token:: RARROW ) {
408
413
let lo = p. span . lo ;
409
414
if eat ( p, token:: NOT ) {
410
- ( ast:: noreturn, @spanned ( lo, p. last_span . hi , ast:: ty_bot) )
411
- } else { ( ast:: return_val, parse_ty ( p, false ) ) }
415
+ ( ast:: noreturn, @{ id: p. get_id ( ) ,
416
+ node: ast:: ty_bot,
417
+ span: ast_util:: mk_sp ( lo, p. last_span . hi ) } )
418
+ } else {
419
+ ( ast:: return_val, parse_ty ( p, false ) )
420
+ }
412
421
} else {
413
422
let pos = p. span . lo ;
414
- ( ast:: return_val, @spanned ( pos, pos, ast:: ty_nil) )
423
+ ( ast:: return_val, @{ id: p. get_id ( ) ,
424
+ node: ast:: ty_nil,
425
+ span: ast_util:: mk_sp ( pos, pos) } )
415
426
}
416
427
}
417
428
@@ -435,8 +446,11 @@ fn parse_ty(p: parser, colons_before_params: bool) -> @ast::ty {
435
446
let lo = p. span . lo ;
436
447
437
448
alt have_dollar ( p) {
438
- some ( e) { ret @spanned ( lo, p. span . hi ,
439
- ast:: ty_mac ( spanned ( lo, p. span . hi , e) ) ) }
449
+ some ( e) {
450
+ ret @{ id : p. get_id ( ) ,
451
+ node : ast:: ty_mac ( spanned ( lo, p. span . hi , e) ) ,
452
+ span : ast_util:: mk_sp ( lo, p. span . hi ) } ;
453
+ }
440
454
none { }
441
455
}
442
456
@@ -475,7 +489,10 @@ fn parse_ty(p: parser, colons_before_params: bool) -> @ast::ty {
475
489
let t = ast:: ty_rec ( elems. node ) ;
476
490
if p. token == token:: COLON {
477
491
p. bump ( ) ;
478
- ast:: ty_constr ( @spanned ( lo, hi, t) , parse_type_constraints ( p) )
492
+ ast:: ty_constr ( @{ id: p. get_id ( ) ,
493
+ node: t,
494
+ span: ast_util:: mk_sp ( lo, hi) } ,
495
+ parse_type_constraints ( p) )
479
496
} else { t }
480
497
} else if p. token == token:: LBRACKET {
481
498
expect ( p, token:: LBRACKET ) ;
@@ -534,7 +551,9 @@ fn parse_fn_block_arg(p: parser) -> ast::arg {
534
551
let t = if eat ( p, token:: COLON ) {
535
552
parse_ty ( p, false )
536
553
} else {
537
- @spanned ( p. span . lo , p. span . hi , ast:: ty_infer)
554
+ @{ id: p. get_id ( ) ,
555
+ node: ast:: ty_infer,
556
+ span: ast_util:: mk_sp ( p. span . lo , p. span . hi ) }
538
557
} ;
539
558
ret { mode : m, ty : t, ident : i, id : p. get_id ( ) } ;
540
559
}
@@ -1606,7 +1625,9 @@ fn parse_local(p: parser, is_mutbl: bool,
1606
1625
allow_init : bool ) -> @ast:: local {
1607
1626
let lo = p. span . lo ;
1608
1627
let pat = parse_pat ( p) ;
1609
- let ty = @spanned ( lo, lo, ast:: ty_infer) ;
1628
+ let ty = @{ id: p. get_id ( ) ,
1629
+ node: ast:: ty_infer,
1630
+ span: ast_util:: mk_sp ( lo, lo) } ;
1610
1631
if eat ( p, token:: COLON ) { ty = parse_ty ( p, false ) ; }
1611
1632
let init = if allow_init { parse_initializer ( p) } else { none } ;
1612
1633
ret @spanned ( lo, p. last_span . hi ,
@@ -1882,7 +1903,7 @@ fn parse_fn_block_decl(p: parser) -> ast::fn_decl {
1882
1903
let output = if eat ( p, token:: RARROW ) {
1883
1904
parse_ty ( p, false )
1884
1905
} else {
1885
- @spanned ( p . span . lo , p. span . hi , ast:: ty_infer)
1906
+ @{ id : p. get_id ( ) , node : ast:: ty_infer, span : p . span }
1886
1907
} ;
1887
1908
ret { inputs : inputs,
1888
1909
output : output,
@@ -1957,7 +1978,7 @@ fn parse_item_iface(p: parser, attrs: [ast::attribute]) -> @ast::item {
1957
1978
fn parse_item_impl ( p : parser , attrs : [ ast:: attribute ] ) -> @ast:: item {
1958
1979
let lo = p. last_span . lo ;
1959
1980
fn wrap_path ( p : parser , pt : @ast:: path ) -> @ast:: ty {
1960
- @{ node: ast:: ty_path ( pt, p. get_id ( ) ) , span: pt. span }
1981
+ @{ id : p . get_id ( ) , node: ast:: ty_path ( pt, p. get_id ( ) ) , span: pt. span }
1961
1982
}
1962
1983
let ( ident, tps) = if !is_word ( p, "of" ) {
1963
1984
if p. token == token:: LT { ( none, parse_ty_params ( p) ) }
@@ -1996,7 +2017,9 @@ fn parse_item_res(p: parser, attrs: [ast::attribute]) -> @ast::item {
1996
2017
{ inputs:
1997
2018
[ { mode: ast:: expl ( ast:: by_ref) , ty: t,
1998
2019
ident: arg_ident, id: p. get_id ( ) } ] ,
1999
- output: @spanned ( lo, lo, ast:: ty_nil) ,
2020
+ output: @{ id: p. get_id ( ) ,
2021
+ node: ast:: ty_nil,
2022
+ span: ast_util:: mk_sp ( lo, lo) } ,
2000
2023
purity: ast:: impure_fn,
2001
2024
cf: ast:: return_val,
2002
2025
constraints: [ ] } ;
@@ -2066,8 +2089,9 @@ enum class_contents { ctor_decl(ast::fn_decl, ast::blk, codemap::span),
2066
2089
// Can ctors have attrs?
2067
2090
// result type is always the type of the class
2068
2091
let decl_ = parse_fn_decl ( p, ast:: impure_fn) ;
2069
- let decl = { output : @{ node : ast:: ty_path ( class_name, p. get_id ( ) ) ,
2070
- span : decl_. output . span }
2092
+ let decl = { output : @{ id : p. get_id ( ) ,
2093
+ node : ast:: ty_path ( class_name, p. get_id ( ) ) ,
2094
+ span : decl_. output . span }
2071
2095
with decl_} ;
2072
2096
let body = parse_block ( p) ;
2073
2097
ret ctor_decl( decl, body, ast_util:: mk_sp ( lo, p. last_span . hi ) ) ;
0 commit comments