@@ -411,6 +411,26 @@ fn parse_ty_constrs(@ast::ty t, &parser p) -> @ast::ty {
411
411
ret t;
412
412
}
413
413
414
+ fn parse_ty_postfix ( @ast:: ty orig_t , & parser p) -> @ast:: ty {
415
+ auto lo = p. get_lo_pos ( ) ;
416
+ if ( p. peek ( ) == token:: LBRACKET ) {
417
+ p. bump ( ) ;
418
+
419
+ auto mut;
420
+ if ( eat_word ( p, "mutable" ) ) {
421
+ mut = ast:: mut;
422
+ } else {
423
+ mut = ast:: imm;
424
+ }
425
+
426
+ expect ( p, token:: RBRACKET ) ;
427
+ auto hi = p. get_hi_pos ( ) ;
428
+ auto t = ast:: ty_ivec ( rec ( ty=orig_t, mut=mut) ) ;
429
+ ret parse_ty_postfix ( @spanned ( lo, hi, t) , p) ;
430
+ }
431
+ ret parse_ty_constrs ( orig_t, p) ;
432
+ }
433
+
414
434
fn parse_ty_or_bang ( & parser p) -> ty_or_bang {
415
435
alt ( p. peek ( ) ) {
416
436
case ( token:: NOT ) { p. bump ( ) ; ret a_bang[ @ast:: ty] ; }
@@ -522,11 +542,6 @@ fn parse_ty(&parser p) -> @ast::ty {
522
542
t = ast:: ty_chan ( parse_ty ( p) ) ;
523
543
hi = p. get_hi_pos ( ) ;
524
544
expect ( p, token:: RBRACKET ) ;
525
- } else if ( eat_word ( p, "ivec" ) ) {
526
- expect ( p, token:: LBRACKET ) ;
527
- t = ast:: ty_ivec ( parse_mt ( p) ) ;
528
- hi = p. get_hi_pos ( ) ;
529
- expect ( p, token:: RBRACKET ) ;
530
545
} else if ( eat_word ( p, "mutable" ) ) {
531
546
p. get_session ( ) . span_warn ( p. get_span ( ) ,
532
547
"ignoring deprecated 'mutable'"
@@ -539,7 +554,7 @@ fn parse_ty(&parser p) -> @ast::ty {
539
554
t = ast:: ty_path ( path, p. get_ann ( ) ) ;
540
555
hi = path. span . hi ;
541
556
} else { p. err ( "expecting type" ) ; t = ast:: ty_nil; fail; }
542
- ret parse_ty_constrs ( @spanned ( lo, hi, t) , p) ;
557
+ ret parse_ty_postfix ( @spanned ( lo, hi, t) , p) ;
543
558
}
544
559
545
560
fn parse_arg ( & parser p) -> ast:: arg {
0 commit comments