Skip to content

Commit 0bcb3bc

Browse files
committed
libsyntax: Parse visibility modifiers before foreign items
1 parent 7e7411e commit 0bcb3bc

File tree

3 files changed

+15
-8
lines changed

3 files changed

+15
-8
lines changed

src/libsyntax/ast.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1485,7 +1485,8 @@ type foreign_item =
14851485
attrs: ~[attribute],
14861486
node: foreign_item_,
14871487
id: node_id,
1488-
span: span};
1488+
span: span,
1489+
vis: visibility};
14891490

14901491
#[auto_serialize]
14911492
enum foreign_item_ {

src/libsyntax/fold.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,8 @@ fn noop_fold_foreign_item(&&ni: @foreign_item, fld: ast_fold)
203203
}
204204
},
205205
id: fld.new_id(ni.id),
206-
span: fld.new_span(ni.span)};
206+
span: fld.new_span(ni.span),
207+
vis: ni.vis};
207208
}
208209

209210
fn noop_fold_item(&&i: @item, fld: ast_fold) -> Option<@item> {

src/libsyntax/parse/parser.rs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2940,7 +2940,8 @@ impl parser {
29402940
(id, item_mod(m), Some(inner_attrs.inner))
29412941
}
29422942

2943-
fn parse_item_foreign_fn(+attrs: ~[attribute]) -> @foreign_item {
2943+
fn parse_item_foreign_fn(vis: ast::visibility,
2944+
+attrs: ~[attribute]) -> @foreign_item {
29442945
let lo = self.span.lo;
29452946
let purity = self.parse_fn_purity();
29462947
let t = self.parse_fn_header();
@@ -2951,10 +2952,12 @@ impl parser {
29512952
attrs: attrs,
29522953
node: foreign_item_fn(decl, purity, t.tps),
29532954
id: self.get_id(),
2954-
span: mk_sp(lo, hi)};
2955+
span: mk_sp(lo, hi),
2956+
vis: vis};
29552957
}
29562958

2957-
fn parse_item_foreign_const(+attrs: ~[attribute]) -> @foreign_item {
2959+
fn parse_item_foreign_const(vis: ast::visibility,
2960+
+attrs: ~[attribute]) -> @foreign_item {
29582961
let lo = self.span.lo;
29592962
self.expect_keyword(~"const");
29602963
let ident = self.parse_ident();
@@ -2966,7 +2969,8 @@ impl parser {
29662969
attrs: attrs,
29672970
node: foreign_item_const(move ty),
29682971
id: self.get_id(),
2969-
span: mk_sp(lo, hi)};
2972+
span: mk_sp(lo, hi),
2973+
vis: vis};
29702974
}
29712975

29722976
fn parse_fn_purity() -> purity {
@@ -2982,10 +2986,11 @@ impl parser {
29822986
}
29832987

29842988
fn parse_foreign_item(+attrs: ~[attribute]) -> @foreign_item {
2989+
let vis = self.parse_visibility();
29852990
if self.is_keyword(~"const") {
2986-
self.parse_item_foreign_const(move attrs)
2991+
self.parse_item_foreign_const(vis, move attrs)
29872992
} else {
2988-
self.parse_item_foreign_fn(move attrs)
2993+
self.parse_item_foreign_fn(vis, move attrs)
29892994
}
29902995
}
29912996

0 commit comments

Comments
 (0)