@@ -1630,8 +1630,8 @@ fn parse_block_no_value(p: parser) -> ast::blk {
1630
1630
// necessary, and this should take a qualifier.
1631
1631
// some blocks start with "#{"...
1632
1632
fn parse_block_tail ( p : parser , lo : uint , s : ast:: blk_check_mode ) -> ast:: blk {
1633
- let view_items = [ ] , stmts = [ ] , expr = none;
1634
- while is_word ( p , "import" ) { view_items += [ parse_view_item ( p) ] ; }
1633
+ let stmts = [ ] , expr = none;
1634
+ let view_items = parse_view_import_only ( p) ;
1635
1635
while p. token != token:: RBRACE {
1636
1636
alt p. token {
1637
1637
token:: SEMI . {
@@ -2378,15 +2378,21 @@ fn is_view_item(p: parser) -> bool {
2378
2378
}
2379
2379
2380
2380
fn parse_view ( p : parser ) -> [ @ast:: view_item ] {
2381
- let items: [ @ast:: view_item ] = [ ] ;
2382
- while is_view_item ( p) { items += [ parse_view_item ( p) ] ; }
2381
+ parse_view_while ( p, is_view_item)
2382
+ }
2383
+
2384
+ fn parse_view_import_only ( p : parser ) -> [ @ast:: view_item ] {
2385
+ parse_view_while ( p, bind is_word ( _, "import" ) )
2386
+ }
2387
+
2388
+ fn parse_view_while ( p : parser , f : fn @( parser ) -> bool ) -> [ @ast:: view_item ] {
2389
+ let items = [ ] ;
2390
+ while f ( p) { items += [ parse_view_item ( p) ] ; }
2383
2391
ret items;
2384
2392
}
2385
2393
2386
2394
fn parse_native_view ( p : parser ) -> [ @ast:: view_item ] {
2387
- let items: [ @ast:: view_item ] = [ ] ;
2388
- while is_view_item ( p) { items += [ parse_view_item ( p) ] ; }
2389
- ret items;
2395
+ parse_view_while ( p, is_view_item)
2390
2396
}
2391
2397
2392
2398
fn parse_crate_from_source_file ( input : str , cfg : ast:: crate_cfg ,
0 commit comments