Skip to content

Commit 5361ef1

Browse files
committed
syntax: fix fallout of merging ast::ViewItem into ast::Item.
1 parent 19b80aa commit 5361ef1

File tree

15 files changed

+202
-418
lines changed

15 files changed

+202
-418
lines changed

src/libsyntax/ast_map/mod.rs

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ pub fn path_to_string<PI: Iterator<Item=PathElem>>(path: PI) -> String {
107107
#[derive(Copy, Show)]
108108
pub enum Node<'ast> {
109109
NodeItem(&'ast Item),
110-
NodeViewItem(&'ast ViewItem),
111110
NodeForeignItem(&'ast ForeignItem),
112111
NodeTraitItem(&'ast TraitItem),
113112
NodeImplItem(&'ast ImplItem),
@@ -134,7 +133,6 @@ enum MapEntry<'ast> {
134133

135134
/// All the node types, with a parent ID.
136135
EntryItem(NodeId, &'ast Item),
137-
EntryViewItem(NodeId, &'ast ViewItem),
138136
EntryForeignItem(NodeId, &'ast ForeignItem),
139137
EntryTraitItem(NodeId, &'ast TraitItem),
140138
EntryImplItem(NodeId, &'ast ImplItem),
@@ -169,7 +167,6 @@ impl<'ast> MapEntry<'ast> {
169167
fn from_node(p: NodeId, node: Node<'ast>) -> MapEntry<'ast> {
170168
match node {
171169
NodeItem(n) => EntryItem(p, n),
172-
NodeViewItem(n) => EntryViewItem(p, n),
173170
NodeForeignItem(n) => EntryForeignItem(p, n),
174171
NodeTraitItem(n) => EntryTraitItem(p, n),
175172
NodeImplItem(n) => EntryImplItem(p, n),
@@ -188,7 +185,6 @@ impl<'ast> MapEntry<'ast> {
188185
fn parent(self) -> Option<NodeId> {
189186
Some(match self {
190187
EntryItem(id, _) => id,
191-
EntryViewItem(id, _) => id,
192188
EntryForeignItem(id, _) => id,
193189
EntryTraitItem(id, _) => id,
194190
EntryImplItem(id, _) => id,
@@ -208,7 +204,6 @@ impl<'ast> MapEntry<'ast> {
208204
fn to_node(self) -> Option<Node<'ast>> {
209205
Some(match self {
210206
EntryItem(_, n) => NodeItem(n),
211-
EntryViewItem(_, n) => NodeViewItem(n),
212207
EntryForeignItem(_, n) => NodeForeignItem(n),
213208
EntryTraitItem(_, n) => NodeTraitItem(n),
214209
EntryImplItem(_, n) => NodeImplItem(n),
@@ -341,13 +336,6 @@ impl<'ast> Map<'ast> {
341336
}
342337
}
343338

344-
pub fn expect_view_item(&self, id: NodeId) -> &'ast ViewItem {
345-
match self.find(id) {
346-
Some(NodeViewItem(view_item)) => view_item,
347-
_ => panic!("expected view item, found {}", self.node_to_string(id))
348-
}
349-
}
350-
351339
pub fn expect_struct(&self, id: NodeId) -> &'ast StructDef {
352340
match self.find(id) {
353341
Some(NodeItem(i)) => {
@@ -533,7 +521,6 @@ impl<'ast> Map<'ast> {
533521
pub fn opt_span(&self, id: NodeId) -> Option<Span> {
534522
let sp = match self.find(id) {
535523
Some(NodeItem(item)) => item.span,
536-
Some(NodeViewItem(item)) => item.span,
537524
Some(NodeForeignItem(foreign_item)) => foreign_item.span,
538525
Some(NodeTraitItem(trait_method)) => {
539526
match *trait_method {
@@ -826,11 +813,6 @@ impl<'ast> Visitor<'ast> for NodeCollector<'ast> {
826813
self.parent = parent;
827814
}
828815

829-
fn visit_view_item(&mut self, item: &'ast ViewItem) {
830-
self.insert(item.id(), NodeViewItem(item));
831-
visit::walk_view_item(self, item);
832-
}
833-
834816
fn visit_pat(&mut self, pat: &'ast Pat) {
835817
self.insert(pat.id, match pat.node {
836818
// Note: this is at least *potentially* a pattern...
@@ -904,7 +886,6 @@ pub fn map_crate<'ast, F: FoldOps>(forest: &'ast mut Forest, fold_ops: F) -> Map
904886
let krate = mem::replace(&mut forest.krate, Crate {
905887
module: Mod {
906888
inner: DUMMY_SP,
907-
view_items: vec![],
908889
items: vec![],
909890
},
910891
attrs: vec![],
@@ -1036,7 +1017,6 @@ impl<'a> NodePrinter for pprust::State<'a> {
10361017
fn print_node(&mut self, node: &Node) -> IoResult<()> {
10371018
match *node {
10381019
NodeItem(a) => self.print_item(&*a),
1039-
NodeViewItem(a) => self.print_view_item(&*a),
10401020
NodeForeignItem(a) => self.print_foreign_item(&*a),
10411021
NodeTraitItem(a) => self.print_trait_method(&*a),
10421022
NodeImplItem(a) => self.print_impl_item(&*a),
@@ -1065,6 +1045,8 @@ fn node_id_to_string(map: &Map, id: NodeId, include_id: bool) -> String {
10651045
Some(NodeItem(item)) => {
10661046
let path_str = map.path_to_str_with_ident(id, item.ident);
10671047
let item_str = match item.node {
1048+
ItemExternCrate(..) => "extern crate",
1049+
ItemUse(..) => "use",
10681050
ItemStatic(..) => "static",
10691051
ItemConst(..) => "const",
10701052
ItemFn(..) => "fn",
@@ -1079,9 +1061,6 @@ fn node_id_to_string(map: &Map, id: NodeId, include_id: bool) -> String {
10791061
};
10801062
format!("{} {}{}", item_str, path_str, id_str)
10811063
}
1082-
Some(NodeViewItem(item)) => {
1083-
format!("view item {}{}", pprust::view_item_to_string(&*item), id_str)
1084-
}
10851064
Some(NodeForeignItem(item)) => {
10861065
let path_str = map.path_to_str_with_ident(id, item.ident);
10871066
format!("foreign item {}{}", path_str, id_str)

src/libsyntax/ast_util.rs

Lines changed: 17 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -410,37 +410,6 @@ impl<'a, 'v, O: IdVisitingOperation> Visitor<'v> for IdVisitor<'a, O> {
410410
visit::walk_mod(self, module)
411411
}
412412

413-
fn visit_view_item(&mut self, view_item: &ViewItem) {
414-
if !self.pass_through_items {
415-
if self.visited_outermost {
416-
return;
417-
} else {
418-
self.visited_outermost = true;
419-
}
420-
}
421-
match view_item.node {
422-
ViewItemExternCrate(_, _, node_id) => {
423-
self.operation.visit_id(node_id)
424-
}
425-
ViewItemUse(ref view_path) => {
426-
match view_path.node {
427-
ViewPathSimple(_, _, node_id) |
428-
ViewPathGlob(_, node_id) => {
429-
self.operation.visit_id(node_id)
430-
}
431-
ViewPathList(_, ref paths, node_id) => {
432-
self.operation.visit_id(node_id);
433-
for path in paths.iter() {
434-
self.operation.visit_id(path.node.id())
435-
}
436-
}
437-
}
438-
}
439-
}
440-
visit::walk_view_item(self, view_item);
441-
self.visited_outermost = false;
442-
}
443-
444413
fn visit_foreign_item(&mut self, foreign_item: &ForeignItem) {
445414
self.operation.visit_id(foreign_item.id);
446415
visit::walk_foreign_item(self, foreign_item)
@@ -456,10 +425,24 @@ impl<'a, 'v, O: IdVisitingOperation> Visitor<'v> for IdVisitor<'a, O> {
456425
}
457426

458427
self.operation.visit_id(item.id);
459-
if let ItemEnum(ref enum_definition, _) = item.node {
460-
for variant in enum_definition.variants.iter() {
461-
self.operation.visit_id(variant.node.id)
428+
match item.node {
429+
ItemUse(ref view_path) => {
430+
match view_path.node {
431+
ViewPathSimple(_, _) |
432+
ViewPathGlob(_) => {}
433+
ViewPathList(_, ref paths) => {
434+
for path in paths.iter() {
435+
self.operation.visit_id(path.node.id())
436+
}
437+
}
438+
}
439+
}
440+
ItemEnum(ref enum_definition, _) => {
441+
for variant in enum_definition.variants.iter() {
442+
self.operation.visit_id(variant.node.id)
443+
}
462444
}
445+
_ => {}
463446
}
464447

465448
visit::walk_item(self, item);
@@ -662,37 +645,6 @@ pub fn walk_pat<F>(pat: &Pat, mut it: F) -> bool where F: FnMut(&Pat) -> bool {
662645
walk_pat_(pat, &mut it)
663646
}
664647

665-
pub trait EachViewItem {
666-
fn each_view_item<F>(&self, f: F) -> bool where F: FnMut(&ast::ViewItem) -> bool;
667-
}
668-
669-
struct EachViewItemData<F> where F: FnMut(&ast::ViewItem) -> bool {
670-
callback: F,
671-
}
672-
673-
impl<'v, F> Visitor<'v> for EachViewItemData<F> where F: FnMut(&ast::ViewItem) -> bool {
674-
fn visit_view_item(&mut self, view_item: &ast::ViewItem) {
675-
let _ = (self.callback)(view_item);
676-
}
677-
}
678-
679-
impl EachViewItem for ast::Crate {
680-
fn each_view_item<F>(&self, f: F) -> bool where F: FnMut(&ast::ViewItem) -> bool {
681-
let mut visit = EachViewItemData {
682-
callback: f,
683-
};
684-
visit::walk_crate(&mut visit, self);
685-
true
686-
}
687-
}
688-
689-
pub fn view_path_id(p: &ViewPath) -> NodeId {
690-
match p.node {
691-
ViewPathSimple(_, _, id) | ViewPathGlob(_, id)
692-
| ViewPathList(_, _, id) => id
693-
}
694-
}
695-
696648
/// Returns true if the given struct def is tuple-like; i.e. that its fields
697649
/// are unnamed.
698650
pub fn struct_def_is_tuple_like(struct_def: &ast::StructDef) -> bool {

src/libsyntax/config.rs

Lines changed: 4 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -63,28 +63,13 @@ pub fn strip_items<F>(krate: ast::Crate, in_cfg: F) -> ast::Crate where
6363
ctxt.fold_crate(krate)
6464
}
6565

66-
fn filter_view_item<F>(cx: &mut Context<F>,
67-
view_item: ast::ViewItem)
68-
-> Option<ast::ViewItem> where
69-
F: FnMut(&[ast::Attribute]) -> bool
70-
{
71-
if view_item_in_cfg(cx, &view_item) {
72-
Some(view_item)
73-
} else {
74-
None
75-
}
76-
}
77-
7866
fn fold_mod<F>(cx: &mut Context<F>,
79-
ast::Mod {inner,
80-
view_items, items}: ast::Mod) -> ast::Mod where
67+
ast::Mod {inner, items}: ast::Mod)
68+
-> ast::Mod where
8169
F: FnMut(&[ast::Attribute]) -> bool
8270
{
8371
ast::Mod {
8472
inner: inner,
85-
view_items: view_items.into_iter().filter_map(|a| {
86-
filter_view_item(cx, a).map(|x| cx.fold_view_item(x))
87-
}).collect(),
8873
items: items.into_iter().flat_map(|a| {
8974
cx.fold_item(a).into_iter()
9075
}).collect()
@@ -104,15 +89,12 @@ fn filter_foreign_item<F>(cx: &mut Context<F>,
10489
}
10590

10691
fn fold_foreign_mod<F>(cx: &mut Context<F>,
107-
ast::ForeignMod {abi, view_items, items}: ast::ForeignMod)
92+
ast::ForeignMod {abi, items}: ast::ForeignMod)
10893
-> ast::ForeignMod where
10994
F: FnMut(&[ast::Attribute]) -> bool
11095
{
11196
ast::ForeignMod {
11297
abi: abi,
113-
view_items: view_items.into_iter().filter_map(|a| {
114-
filter_view_item(cx, a).map(|x| cx.fold_view_item(x))
115-
}).collect(),
11698
items: items.into_iter()
11799
.filter_map(|a| filter_foreign_item(cx, a))
118100
.collect()
@@ -216,18 +198,14 @@ fn retain_stmt<F>(cx: &mut Context<F>, stmt: &ast::Stmt) -> bool where
216198
fn fold_block<F>(cx: &mut Context<F>, b: P<ast::Block>) -> P<ast::Block> where
217199
F: FnMut(&[ast::Attribute]) -> bool
218200
{
219-
b.map(|ast::Block {id, view_items, stmts, expr, rules, span}| {
201+
b.map(|ast::Block {id, stmts, expr, rules, span}| {
220202
let resulting_stmts: Vec<P<ast::Stmt>> =
221203
stmts.into_iter().filter(|a| retain_stmt(cx, &**a)).collect();
222204
let resulting_stmts = resulting_stmts.into_iter()
223205
.flat_map(|stmt| cx.fold_stmt(stmt).into_iter())
224206
.collect();
225-
let filtered_view_items = view_items.into_iter().filter_map(|a| {
226-
filter_view_item(cx, a).map(|x| cx.fold_view_item(x))
227-
}).collect();
228207
ast::Block {
229208
id: id,
230-
view_items: filtered_view_items,
231209
stmts: resulting_stmts,
232210
expr: expr.map(|x| cx.fold_expr(x)),
233211
rules: rules,
@@ -267,12 +245,6 @@ fn foreign_item_in_cfg<F>(cx: &mut Context<F>, item: &ast::ForeignItem) -> bool
267245
return (cx.in_cfg)(item.attrs.as_slice());
268246
}
269247

270-
fn view_item_in_cfg<F>(cx: &mut Context<F>, item: &ast::ViewItem) -> bool where
271-
F: FnMut(&[ast::Attribute]) -> bool
272-
{
273-
return (cx.in_cfg)(item.attrs.as_slice());
274-
}
275-
276248
fn trait_method_in_cfg<F>(cx: &mut Context<F>, meth: &ast::TraitItem) -> bool where
277249
F: FnMut(&[ast::Attribute]) -> bool
278250
{

0 commit comments

Comments
 (0)