@@ -1433,7 +1433,7 @@ fn ann_to_type(&ast.ann ann) -> t {
1433
1433
log_err "ann_to_type() called on node with no type" ;
1434
1434
fail;
1435
1435
}
1436
- case ( ast. ann_type ( ?ty, _, _) ) {
1436
+ case ( ast. ann_type ( _ , ?ty, _, _) ) {
1437
1437
ret ty;
1438
1438
}
1439
1439
}
@@ -1445,7 +1445,7 @@ fn ann_to_type_params(&ast.ann ann) -> vec[t] {
1445
1445
log_err "ann_to_type_params() called on node with no type params" ;
1446
1446
fail;
1447
1447
}
1448
- case ( ast. ann_type ( _, ?tps, _) ) {
1448
+ case ( ast. ann_type ( _, _ , ?tps, _) ) {
1449
1449
alt ( tps) {
1450
1450
case ( none[ vec[ t] ] ) {
1451
1451
let vec[ t] result = vec ( ) ;
@@ -1467,7 +1467,7 @@ fn ann_to_monotype(ctxt cx, ast.ann a) -> t {
1467
1467
log_err "ann_to_monotype() called on expression with no type!" ;
1468
1468
fail;
1469
1469
}
1470
- case ( ast. ann_type ( ?typ, ?tps_opt, _) ) {
1470
+ case ( ast. ann_type ( _ , ?typ, ?tps_opt, _) ) {
1471
1471
alt ( tps_opt) {
1472
1472
case ( none[ vec[ t] ] ) { ret typ; }
1473
1473
case ( some[ vec[ t] ] ( ?tps) ) {
@@ -1479,8 +1479,8 @@ fn ann_to_monotype(ctxt cx, ast.ann a) -> t {
1479
1479
}
1480
1480
1481
1481
// Turns a type into an ann_type, using defaults for other fields.
1482
- fn triv_ann ( t typ ) -> ast . ann {
1483
- ret ast. ann_type ( typ, none[ vec[ t] ] , none[ @ts_ann] ) ;
1482
+ fn triv_ann ( & ast . ann old , t typ ) -> ast . ann {
1483
+ ret ast. ann_type ( ast . ann_tag ( old ) , typ, none[ vec[ t] ] , none[ @ts_ann] ) ;
1484
1484
}
1485
1485
1486
1486
// Returns the number of distinct type parameters in the given type.
@@ -1778,7 +1778,7 @@ fn expr_has_ty_params(&@ast.expr expr) -> bool {
1778
1778
// FIXME: Rewrite using complex patterns when they're trustworthy.
1779
1779
alt ( expr_ann ( expr) ) {
1780
1780
case ( ast. ann_none ( _) ) { fail; }
1781
- case ( ast. ann_type ( _, ?tps_opt, _) ) {
1781
+ case ( ast. ann_type ( _, _ , ?tps_opt, _) ) {
1782
1782
ret !Option . is_none [ vec[ t] ] ( tps_opt) ;
1783
1783
}
1784
1784
}
@@ -1794,28 +1794,31 @@ fn replace_expr_type(&@ast.expr expr,
1794
1794
new_tps = none[ vec[ t] ] ;
1795
1795
}
1796
1796
1797
- auto ann = ast. ann_type ( new_tyt. _1 , new_tps, none[ @ts_ann] ) ;
1797
+ fn mkann_fn ( t tyt , Option . t[ vec[ t] ] tps , & ast. ann old_ann ) -> ast . ann {
1798
+ ret ast. ann_type ( ast. ann_tag ( old_ann) , tyt, tps, none[ @ts_ann] ) ;
1799
+ }
1800
+ auto mkann = bind mkann_fn ( new_tyt. _1 , new_tps, _) ;
1798
1801
1799
1802
alt ( expr. node ) {
1800
- case ( ast. expr_call ( ?callee, ?args, _ ) ) {
1801
- ret @fold. respan [ ast . expr_ ] ( expr. span ,
1802
- ast. expr_call ( callee, args, ann ) ) ;
1803
+ case ( ast. expr_call ( ?callee, ?args, ?a ) ) {
1804
+ ret @fold. respan ( expr. span ,
1805
+ ast. expr_call ( callee, args, mkann ( a ) ) ) ;
1803
1806
}
1804
- case ( ast. expr_self_method ( ?ident, _ ) ) {
1805
- ret @fold. respan [ ast . expr_ ] ( expr. span ,
1806
- ast. expr_self_method ( ident, ann ) ) ;
1807
+ case ( ast. expr_self_method ( ?ident, ?a ) ) {
1808
+ ret @fold. respan ( expr. span ,
1809
+ ast. expr_self_method ( ident, mkann ( a ) ) ) ;
1807
1810
}
1808
- case ( ast. expr_bind ( ?callee, ?args, _ ) ) {
1809
- ret @fold. respan [ ast . expr_ ] ( expr. span ,
1810
- ast. expr_bind ( callee, args, ann ) ) ;
1811
+ case ( ast. expr_bind ( ?callee, ?args, ?a ) ) {
1812
+ ret @fold. respan ( expr. span ,
1813
+ ast. expr_bind ( callee, args, mkann ( a ) ) ) ;
1811
1814
}
1812
- case ( ast. expr_field ( ?e, ?i, _ ) ) {
1813
- ret @fold. respan [ ast . expr_ ] ( expr. span ,
1814
- ast. expr_field ( e, i, ann ) ) ;
1815
+ case ( ast. expr_field ( ?e, ?i, ?a ) ) {
1816
+ ret @fold. respan ( expr. span ,
1817
+ ast. expr_field ( e, i, mkann ( a ) ) ) ;
1815
1818
}
1816
- case ( ast. expr_path ( ?p, ?dopt, _ ) ) {
1817
- ret @fold. respan [ ast . expr_ ] ( expr. span ,
1818
- ast. expr_path ( p, dopt, ann ) ) ;
1819
+ case ( ast. expr_path ( ?p, ?dopt, ?a ) ) {
1820
+ ret @fold. respan ( expr. span ,
1821
+ ast. expr_path ( p, dopt, mkann ( a ) ) ) ;
1819
1822
}
1820
1823
case ( _) {
1821
1824
log_err "unhandled expr type in replace_expr_type(): " +
0 commit comments