@@ -1662,17 +1662,18 @@ impure fn parse_optional_meta(parser p) -> vec[@ast.meta_item] {
1662
1662
}
1663
1663
}
1664
1664
1665
- impure fn parse_use ( parser p) -> @ast. use_node {
1665
+ impure fn parse_use ( parser p) -> @ast. view_item {
1666
1666
auto lo = p. get_span ( ) ;
1667
1667
auto hi = lo;
1668
1668
expect ( p, token. USE ) ;
1669
1669
auto ident = parse_ident ( p) ;
1670
1670
auto metadata = parse_optional_meta ( p) ;
1671
1671
expect ( p, token. SEMI ) ;
1672
- ret @spanned ( lo, hi, rec ( name = ident, metadata = metadata) ) ;
1672
+ auto use_decl = ast. view_item_use ( ident, metadata) ;
1673
+ ret @spanned ( lo, hi, use_decl) ;
1673
1674
}
1674
1675
1675
- impure fn parse_rest_import_name ( parser p, ast . ident id) -> @ast. import_node {
1676
+ impure fn parse_rest_import_name ( parser p, ast . ident id) -> @ast. view_item {
1676
1677
auto lo = p. get_span ( ) ;
1677
1678
auto hi = lo;
1678
1679
let vec[ ast. ident ] identifiers = vec ( ) ;
@@ -1683,10 +1684,11 @@ impure fn parse_rest_import_name(parser p, ast.ident id) -> @ast.import_node {
1683
1684
identifiers += i;
1684
1685
}
1685
1686
p. bump ( ) ;
1686
- ret @spanned ( lo, hi, rec ( identifiers = identifiers) ) ;
1687
+ auto import_decl = ast. view_item_import ( identifiers) ;
1688
+ ret @spanned ( lo, hi, import_decl) ;
1687
1689
}
1688
1690
1689
- impure fn parse_full_import_name ( parser p) -> @ast. import_node {
1691
+ impure fn parse_full_import_name ( parser p) -> @ast. view_item {
1690
1692
alt ( p. peek ( ) ) {
1691
1693
case ( token. IDENT ( ?ident) ) {
1692
1694
p. bump ( ) ;
@@ -1699,7 +1701,7 @@ impure fn parse_full_import_name(parser p) -> @ast.import_node {
1699
1701
fail;
1700
1702
}
1701
1703
1702
- impure fn parse_import ( parser p) -> @ast. import_node {
1704
+ impure fn parse_import ( parser p) -> @ast. view_item {
1703
1705
expect ( p, token. IMPORT ) ;
1704
1706
alt ( p. peek ( ) ) {
1705
1707
case ( token. IDENT ( ?ident) ) {
@@ -1721,21 +1723,34 @@ impure fn parse_import(parser p) -> @ast.import_node {
1721
1723
fail;
1722
1724
}
1723
1725
1724
- impure fn parse_view ( parser p) -> vec [ ast. view_item ] {
1725
- let vec[ ast. view_item ] items = vec ( ) ;
1726
- while ( true ) {
1727
- alt ( p. peek ( ) ) {
1728
- case ( token. USE ) {
1729
- items += vec ( ast. view_item_use ( parse_use ( p) ) ) ;
1730
- }
1731
- case ( token. IMPORT ) {
1732
- items += vec ( ast. view_item_import ( parse_import ( p) ) ) ;
1733
- }
1734
- case ( _) {
1735
- ret items;
1736
- }
1726
+ impure fn parse_use_or_import ( parser p) -> @ast. view_item {
1727
+ alt ( p. peek ( ) ) {
1728
+ case ( token. USE ) {
1729
+ ret parse_use ( p) ;
1737
1730
}
1731
+ case ( token. IMPORT ) {
1732
+ ret parse_import ( p) ;
1733
+ }
1734
+ }
1735
+ }
1736
+
1737
+ fn is_use_or_import ( token . token t) -> bool {
1738
+ if ( t == token. USE ) {
1739
+ ret true ;
1740
+ }
1741
+ if ( t == token. IMPORT ) {
1742
+ ret true ;
1743
+ }
1744
+ ret false;
1745
+ }
1746
+
1747
+ impure fn parse_view ( parser p) -> vec[ @ast. view_item ] {
1748
+ let vec[ @ast. view_item] items = vec ( ) ;
1749
+ while ( is_use_or_import ( p. peek ( ) ) ) {
1750
+ auto item = parse_use_or_import ( p) ;
1751
+ items += vec ( item) ;
1738
1752
}
1753
+ ret items;
1739
1754
}
1740
1755
1741
1756
impure fn parse_crate_from_crate_file ( parser p) -> @ast. crate {
0 commit comments