@@ -1539,6 +1539,10 @@ fn print_path(s: ps, &&path: @ast::path, colons_before_params: bool) {
1539
1539
}
1540
1540
1541
1541
fn print_pat(s: ps, &&pat: @ast::pat) {
1542
+ print_pat_full(s, pat, true)
1543
+ }
1544
+
1545
+ fn print_pat_full(s: ps, &&pat: @ast::pat, print_binding_mode: bool) {
1542
1546
maybe_print_comment(s, pat.span.lo);
1543
1547
let ann_node = node_pat(s, pat);
1544
1548
(s.ann.pre)(ann_node);
@@ -1547,24 +1551,29 @@ fn print_pat(s: ps, &&pat: @ast::pat) {
1547
1551
match pat.node {
1548
1552
ast::pat_wild => word(s.s, ~" _") ,
1549
1553
ast:: pat_ident ( binding_mode, path, sub) => {
1550
- match binding_mode {
1551
- ast:: bind_by_ref( mutbl) => {
1552
- word_nbsp( s, ~"ref ");
1553
- print_mutability(s, mutbl);
1554
- }
1555
- ast::bind_by_move => {
1556
- word_nbsp(s, ~" move") ;
1554
+ if print_binding_mode {
1555
+ match binding_mode {
1556
+ ast:: bind_by_ref( mutbl) => {
1557
+ word_nbsp( s, ~"ref ");
1558
+ print_mutability(s, mutbl);
1559
+ }
1560
+ ast::bind_by_move => {
1561
+ word_nbsp(s, ~" move") ;
1562
+ }
1563
+ ast:: bind_by_value => {
1564
+ word_nbsp ( s, ~"copy") ;
1565
+ }
1566
+ ast:: bind_by_implicit_ref => { }
1567
+ }
1557
1568
}
1558
- ast:: bind_by_value => {
1559
- word_nbsp ( s, ~"copy") ;
1569
+ print_path ( s, path, true ) ;
1570
+ match sub {
1571
+ Some ( p) => {
1572
+ word ( s. s , ~"@") ;
1573
+ print_pat ( s, p) ;
1574
+ }
1575
+ None => ( )
1560
1576
}
1561
- ast:: bind_by_implicit_ref => { }
1562
- }
1563
- print_path( s, path, true ) ;
1564
- match sub {
1565
- Some ( p) => { word ( s. s , ~"@") ; print_pat ( s, p) ; }
1566
- None => ( )
1567
- }
1568
1577
}
1569
1578
ast:: pat_enum ( path, args_) => {
1570
1579
print_path ( s, path, true ) ;
@@ -1619,8 +1628,14 @@ fn print_pat(s: ps, &&pat: @ast::pat) {
1619
1628
commasep(s, inconsistent, elts, print_pat);
1620
1629
pclose(s);
1621
1630
}
1622
- ast::pat_box(inner) => { word(s.s, ~" @") ; print_pat ( s, inner) ; }
1623
- ast:: pat_uniq ( inner) => { word ( s. s , ~"~") ; print_pat ( s, inner) ; }
1631
+ ast::pat_box(inner) => {
1632
+ word(s.s, ~" @") ;
1633
+ print_pat ( s, inner) ;
1634
+ }
1635
+ ast:: pat_uniq ( inner) => {
1636
+ word ( s. s , ~"~") ;
1637
+ print_pat ( s, inner) ;
1638
+ }
1624
1639
ast:: pat_region ( inner) => {
1625
1640
word ( s. s , ~"& ");
1626
1641
print_pat(s, inner);
@@ -1870,7 +1885,7 @@ fn print_arg(s: ps, input: ast::arg) {
1870
1885
ibox ( s, indent_unit) ;
1871
1886
print_arg_mode ( s, input. mode ) ;
1872
1887
match input. ty . node {
1873
- ast:: ty_infer => print_pat ( s, input. pat ) ,
1888
+ ast:: ty_infer => print_pat_full ( s, input. pat , false ) ,
1874
1889
_ => {
1875
1890
match input. pat . node {
1876
1891
ast:: pat_ident( _, path, _) if
@@ -1879,7 +1894,7 @@ fn print_arg(s: ps, input: ast::arg) {
1879
1894
// Do nothing.
1880
1895
}
1881
1896
_ => {
1882
- print_pat ( s, input. pat ) ;
1897
+ print_pat_full ( s, input. pat , false ) ;
1883
1898
word ( s. s , ~": ") ;
1884
1899
space ( s. s ) ;
1885
1900
}
0 commit comments