@@ -883,8 +883,7 @@ fn parse_bottom_expr(p: &parser) -> @ast::expr {
883
883
884
884
// We don't need to pull ".node" out of fields because it's not a
885
885
// "spanned".
886
- let ob: ast:: anon_obj =
887
- { fields: fields, methods: meths, inner_obj: inner_obj} ;
886
+ let ob = { fields: fields, methods: meths, inner_obj: inner_obj} ;
888
887
ex = ast:: expr_anon_obj ( ob) ;
889
888
} else if ( eat_word( p, "bind") ) {
890
889
let e = parse_expr_res ( p, RESTRICT_NO_CALL_EXPRS ) ;
@@ -1554,27 +1553,20 @@ fn parse_source_stmt(p: &parser) -> @ast::stmt {
1554
1553
// If we have attributes then we should have an item
1555
1554
if ivec:: len ( item_attrs) > 0 u {
1556
1555
alt maybe_item {
1557
- got_item ( _) { /* fallthrough */ }
1556
+ some ( _) { /* fallthrough */ }
1558
1557
_ { ret p. fatal ( "expected item" ) ; }
1559
1558
}
1560
1559
}
1561
1560
1562
1561
1563
1562
alt maybe_item {
1564
- got_item ( i) {
1563
+ some ( i) {
1565
1564
let hi = i. span . hi ;
1566
1565
let decl = @spanned ( lo, hi, ast:: decl_item ( i) ) ;
1567
1566
ret @spanned ( lo, hi, ast:: stmt_decl ( decl, p. get_id ( ) ) ) ;
1568
1567
}
1569
- fn_no_item. { // parse_item will have already skipped "fn"
1570
-
1571
- let e = parse_fn_expr ( p, ast:: proto_fn) ;
1572
- e = parse_dot_or_call_expr_with ( p, e) ;
1573
- ret @spanned ( lo, e. span . hi , ast:: stmt_expr ( e, p. get_id ( ) ) ) ;
1574
- }
1575
- no_item. {
1568
+ none. {
1576
1569
// Remainder are line-expr stmts.
1577
-
1578
1570
let e = parse_expr ( p) ;
1579
1571
ret @spanned ( lo, e. span . hi , ast:: stmt_expr ( e, p. get_id ( ) ) ) ;
1580
1572
}
@@ -1873,7 +1865,7 @@ fn parse_mod_items(p: &parser, term: token::token,
1873
1865
let attrs = initial_attrs + parse_outer_attributes ( p) ;
1874
1866
initial_attrs = ~[ ] ;
1875
1867
alt parse_item( p, attrs) {
1876
- got_item ( i) { items += ~[ i] ; }
1868
+ some ( i) { items += ~[ i] ; }
1877
1869
_ {
1878
1870
p. fatal ( "expected item but found " +
1879
1871
token:: to_str ( p. get_reader ( ) , p. peek ( ) ) ) ;
@@ -2082,37 +2074,34 @@ fn parse_auth(p: &parser) -> ast::_auth {
2082
2074
fail;
2083
2075
}
2084
2076
2085
- tag parsed_item { got_item( @ast:: item) ; no_item; fn_no_item; }
2086
-
2087
- fn parse_item ( p : & parser , attrs : & ast:: attribute [ ] ) -> parsed_item {
2077
+ fn parse_item ( p : & parser , attrs : & ast:: attribute [ ] ) -> option:: t[ @ast:: item ] {
2088
2078
if eat_word ( p, "const" ) {
2089
- ret got_item ( parse_item_const ( p, attrs) ) ;
2090
- } else if ( eat_word ( p, "fn" ) ) {
2091
- // This is an anonymous function
2092
-
2093
- if p. peek ( ) == token:: LPAREN { ret fn_no_item; }
2094
- ret got_item( parse_item_fn_or_iter ( p, ast:: impure_fn, ast:: proto_fn,
2079
+ ret some ( parse_item_const ( p, attrs) ) ;
2080
+ } else if ( is_word ( p, "fn" ) && p. look_ahead ( 1 u) != token:: LPAREN ) {
2081
+ p. bump ( ) ;
2082
+ ret some( parse_item_fn_or_iter ( p, ast:: impure_fn, ast:: proto_fn,
2095
2083
attrs) ) ;
2096
2084
} else if ( eat_word ( p, "pred" ) ) {
2097
- ret got_item ( parse_item_fn_or_iter ( p, ast:: pure_fn, ast:: proto_fn,
2085
+ ret some ( parse_item_fn_or_iter ( p, ast:: pure_fn, ast:: proto_fn,
2098
2086
attrs) ) ;
2099
2087
} else if ( eat_word ( p, "iter" ) ) {
2100
- ret got_item ( parse_item_fn_or_iter ( p, ast:: impure_fn, ast:: proto_iter,
2088
+ ret some ( parse_item_fn_or_iter ( p, ast:: impure_fn, ast:: proto_iter,
2101
2089
attrs) ) ;
2102
2090
} else if ( eat_word ( p, "mod" ) ) {
2103
- ret got_item ( parse_item_mod ( p, attrs) ) ;
2091
+ ret some ( parse_item_mod ( p, attrs) ) ;
2104
2092
} else if ( eat_word ( p, "native" ) ) {
2105
- ret got_item ( parse_item_native_mod ( p, attrs) ) ;
2093
+ ret some ( parse_item_native_mod ( p, attrs) ) ;
2106
2094
}
2107
2095
if eat_word ( p, "type" ) {
2108
- ret got_item ( parse_item_type ( p, attrs) ) ;
2096
+ ret some ( parse_item_type ( p, attrs) ) ;
2109
2097
} else if ( eat_word ( p, "tag" ) ) {
2110
- ret got_item ( parse_item_tag ( p, attrs) ) ;
2111
- } else if ( eat_word ( p, "obj" ) ) {
2112
- ret got_item ( parse_item_obj ( p, attrs) ) ;
2098
+ ret some ( parse_item_tag ( p, attrs) ) ;
2099
+ } else if ( is_word ( p, "obj" ) && p. look_ahead ( 1 u) != token:: LPAREN ) {
2100
+ p. bump ( ) ;
2101
+ ret some( parse_item_obj ( p, attrs) ) ;
2113
2102
} else if ( eat_word ( p, "resource" ) ) {
2114
- ret got_item ( parse_item_res ( p, attrs) ) ;
2115
- } else { ret no_item ; }
2103
+ ret some ( parse_item_res ( p, attrs) ) ;
2104
+ } else { ret none ; }
2116
2105
}
2117
2106
2118
2107
// A type to distingush between the parsing of item attributes or syntax
0 commit comments