@@ -1485,7 +1485,7 @@ fn parse_let(p: parser) -> @ast::decl {
1485
1485
}
1486
1486
1487
1487
/* assumes "let" token has already been consumed */
1488
- fn parse_instance_var ( p : parser , pr : ast:: privacy ) -> @ast:: class_member {
1488
+ fn parse_instance_var ( p : parser , pr : ast:: visibility ) -> @ast:: class_member {
1489
1489
let mut is_mutbl = ast:: class_immutable;
1490
1490
let lo = p. span . lo ;
1491
1491
if eat_keyword ( p, "mut" ) {
@@ -1527,7 +1527,7 @@ fn parse_stmt(p: parser, +first_item_attrs: [ast::attribute]) -> @ast::stmt {
1527
1527
1528
1528
let item_attrs = first_item_attrs + item_attrs;
1529
1529
1530
- alt parse_item( p, item_attrs) {
1530
+ alt parse_item( p, item_attrs, ast :: public ) {
1531
1531
some ( i) {
1532
1532
let mut hi = i. span . hi ;
1533
1533
let decl = @spanned ( lo, hi, ast:: decl_item ( i) ) ;
@@ -1789,11 +1789,13 @@ fn parse_fn_header(p: parser) -> {ident: ast::ident, tps: [ast::ty_param]} {
1789
1789
}
1790
1790
1791
1791
fn mk_item ( p : parser , lo : uint , hi : uint , +ident : ast:: ident ,
1792
- +node : ast:: item_ , +attrs : [ ast:: attribute ] ) -> @ast:: item {
1792
+ +node : ast:: item_ , vis : ast:: visibility ,
1793
+ +attrs : [ ast:: attribute ] ) -> @ast:: item {
1793
1794
ret @{ ident : ident,
1794
1795
attrs : attrs,
1795
1796
id : p. get_id ( ) ,
1796
1797
node : node,
1798
+ vis : vis,
1797
1799
span : mk_sp ( lo, hi) } ;
1798
1800
}
1799
1801
@@ -1819,7 +1821,7 @@ fn parse_method_name(p: parser) -> ast::ident {
1819
1821
}
1820
1822
}
1821
1823
1822
- fn parse_method ( p : parser , pr : ast:: privacy ) -> @ast:: method {
1824
+ fn parse_method ( p : parser , pr : ast:: visibility ) -> @ast:: method {
1823
1825
let attrs = parse_outer_attributes ( p) ;
1824
1826
let lo = p. span . lo , pur = parse_fn_purity ( p) ;
1825
1827
let ident = parse_method_name ( p) ;
@@ -1829,7 +1831,7 @@ fn parse_method(p: parser, pr: ast::privacy) -> @ast::method {
1829
1831
let attrs = attrs + inner_attrs;
1830
1832
@{ ident: ident, attrs: attrs, tps: tps, decl: decl, body: body,
1831
1833
id: p. get_id ( ) , span: mk_sp ( lo, body. span . hi ) ,
1832
- self_id: p. get_id ( ) , privacy : pr}
1834
+ self_id: p. get_id ( ) , vis : pr}
1833
1835
}
1834
1836
1835
1837
fn parse_item_iface ( p : parser ) -> item_info {
@@ -1877,7 +1879,7 @@ fn parse_item_impl(p: parser) -> item_info {
1877
1879
let ty = parse_ty ( p, false ) ;
1878
1880
let mut meths = [ ] ;
1879
1881
expect ( p, token:: LBRACE ) ;
1880
- while !eat ( p, token:: RBRACE ) { meths += [ parse_method ( p, ast:: pub ) ] ; }
1882
+ while !eat ( p, token:: RBRACE ) { meths += [ parse_method ( p, ast:: public ) ] ; }
1881
1883
( ident, ast:: item_impl ( tps, rp, ifce, ty, meths) , none)
1882
1884
}
1883
1885
@@ -1978,15 +1980,15 @@ fn parse_item_class(p: parser) -> item_info {
1978
1980
}
1979
1981
}
1980
1982
1981
- fn parse_single_class_item ( p : parser , privcy : ast:: privacy )
1983
+ fn parse_single_class_item ( p : parser , vis : ast:: visibility )
1982
1984
-> @ast:: class_member {
1983
1985
if eat_keyword ( p, "let" ) {
1984
- let a_var = parse_instance_var ( p, privcy ) ;
1986
+ let a_var = parse_instance_var ( p, vis ) ;
1985
1987
expect ( p, token:: SEMI ) ;
1986
1988
ret a_var;
1987
1989
}
1988
1990
else {
1989
- let m = parse_method ( p, privcy ) ;
1991
+ let m = parse_method ( p, vis ) ;
1990
1992
ret @{ node : ast:: class_method ( m) , span : m. span } ;
1991
1993
}
1992
1994
}
@@ -2014,17 +2016,23 @@ fn parse_class_item(p:parser, class_name_with_tps: @ast::path)
2014
2016
expect ( p, token:: LBRACE ) ;
2015
2017
let mut results = [ ] ;
2016
2018
while p. token != token:: RBRACE {
2017
- results += [ parse_single_class_item ( p, ast:: priv ) ] ;
2019
+ results += [ parse_single_class_item ( p, ast:: private ) ] ;
2018
2020
}
2019
2021
p. bump ( ) ;
2020
2022
ret members( results) ;
2021
2023
}
2022
2024
else {
2023
2025
// Probably need to parse attrs
2024
- ret members ( [ parse_single_class_item ( p, ast:: pub ) ] ) ;
2026
+ ret members ( [ parse_single_class_item ( p, ast:: public ) ] ) ;
2025
2027
}
2026
2028
}
2027
2029
2030
+ fn parse_visibility ( p : parser , def : ast:: visibility ) -> ast:: visibility {
2031
+ if eat_keyword ( p, "pub" ) { ast:: public }
2032
+ else if eat_keyword ( p, "priv" ) { ast:: private }
2033
+ else { def }
2034
+ }
2035
+
2028
2036
fn parse_mod_items ( p : parser , term : token:: token ,
2029
2037
+first_item_attrs : [ ast:: attribute ] ) -> ast:: _mod {
2030
2038
// Shouldn't be any view items since we've already parsed an item attr
@@ -2035,7 +2043,8 @@ fn parse_mod_items(p: parser, term: token::token,
2035
2043
let mut attrs = parse_outer_attributes ( p) ;
2036
2044
if first { attrs = first_item_attrs + attrs; first = false ; }
2037
2045
#debug[ "parse_mod_items: parse_item(attrs=%?)" , attrs] ;
2038
- alt parse_item( p, attrs) {
2046
+ let vis = parse_visibility ( p, ast:: private) ;
2047
+ alt parse_item( p, attrs, vis) {
2039
2048
some ( i) { items += [ i] ; }
2040
2049
_ {
2041
2050
p. fatal ( "expected item but found '" +
@@ -2154,7 +2163,7 @@ fn parse_region_param(p: parser) -> ast::region_param {
2154
2163
}
2155
2164
}
2156
2165
2157
- fn parse_item_enum ( p : parser ) -> item_info {
2166
+ fn parse_item_enum ( p : parser , default_vis : ast :: visibility ) -> item_info {
2158
2167
let id = parse_ident ( p) ;
2159
2168
let rp = parse_region_param ( p) ;
2160
2169
let ty_params = parse_ty_params ( p) ;
@@ -2171,7 +2180,8 @@ fn parse_item_enum(p: parser) -> item_info {
2171
2180
attrs: [ ] ,
2172
2181
args: [ { ty: ty, id: p. get_id ( ) } ] ,
2173
2182
id: p. get_id ( ) ,
2174
- disr_expr: none} ) ;
2183
+ disr_expr: none,
2184
+ vis: ast:: public} ) ;
2175
2185
ret ( id, ast:: item_enum ( [ variant] , ty_params, rp) , none) ;
2176
2186
}
2177
2187
expect ( p, token:: LBRACE ) ;
@@ -2181,6 +2191,7 @@ fn parse_item_enum(p: parser) -> item_info {
2181
2191
while p. token != token:: RBRACE {
2182
2192
let variant_attrs = parse_outer_attributes ( p) ;
2183
2193
let vlo = p. span . lo ;
2194
+ let vis = parse_visibility ( p, default_vis) ;
2184
2195
let ident = parse_value_ident ( p) ;
2185
2196
let mut args = [ ] , disr_expr = none;
2186
2197
if p. token == token:: LPAREN {
@@ -2198,7 +2209,7 @@ fn parse_item_enum(p: parser) -> item_info {
2198
2209
2199
2210
let vr = { name: ident, attrs: variant_attrs,
2200
2211
args: args, id: p. get_id ( ) ,
2201
- disr_expr: disr_expr} ;
2212
+ disr_expr: disr_expr, vis : vis } ;
2202
2213
variants += [ spanned ( vlo, p. last_span . hi , vr) ] ;
2203
2214
2204
2215
if !eat ( p, token:: COMMA ) { break ; }
@@ -2241,7 +2252,8 @@ fn fn_expr_lookahead(tok: token::token) -> bool {
2241
2252
}
2242
2253
}
2243
2254
2244
- fn parse_item ( p : parser , +attrs : [ ast:: attribute ] ) -> option < @ast:: item > {
2255
+ fn parse_item ( p : parser , +attrs : [ ast:: attribute ] , vis : ast:: visibility )
2256
+ -> option < @ast:: item > {
2245
2257
let lo = p. span . lo ;
2246
2258
let ( ident, item_, extra_attrs) = if eat_keyword ( p, "const" ) {
2247
2259
parse_item_const ( p)
@@ -2265,7 +2277,7 @@ fn parse_item(p: parser, +attrs: [ast::attribute]) -> option<@ast::item> {
2265
2277
} else if eat_keyword ( p, "type" ) {
2266
2278
parse_item_type ( p)
2267
2279
} else if eat_keyword ( p, "enum" ) {
2268
- parse_item_enum ( p)
2280
+ parse_item_enum ( p, vis )
2269
2281
} else if eat_keyword ( p, "iface" ) {
2270
2282
parse_item_iface ( p)
2271
2283
} else if eat_keyword ( p, "impl" ) {
@@ -2275,10 +2287,11 @@ fn parse_item(p: parser, +attrs: [ast::attribute]) -> option<@ast::item> {
2275
2287
} else if eat_keyword ( p, "class" ) {
2276
2288
parse_item_class ( p)
2277
2289
} else { ret none; } ;
2278
- some ( mk_item ( p, lo, p. last_span . hi , ident, item_, alt extra_attrs {
2279
- some( as) { attrs + as }
2280
- none { attrs }
2281
- } ) )
2290
+ some ( mk_item ( p, lo, p. last_span . hi , ident, item_, vis,
2291
+ alt extra_attrs {
2292
+ some( as) { attrs + as }
2293
+ none { attrs }
2294
+ } ) )
2282
2295
}
2283
2296
2284
2297
fn parse_use ( p : parser ) -> ast:: view_item_ {
0 commit comments