visitor.visit_id(item.id);
walk_list!(visitor, visit_foreign_item, &foreign_module.items);
}
+ ItemGlobalAsm(_) => {
+ visitor.visit_id(item.id);
+ }
ItemTy(ref typ, ref type_parameters) => {
visitor.visit_id(item.id);
visitor.visit_ty(typ);
TyTypeof(expression) => {
visitor.visit_nested_body(expression)
}
- TyInfer => {}
+ TyInfer | TyErr => {}
}
}
}
ExprIf(ref head_expression, ref if_block, ref optional_else) => {
visitor.visit_expr(head_expression);
- visitor.visit_block(if_block);
+ visitor.visit_expr(if_block);
walk_list!(visitor, visit_expr, optional_else);
}
ExprWhile(ref subexpression, ref block, ref opt_sp_name) => {
}
ExprBreak(label, ref opt_expr) => {
label.ident.map(|ident| {
- if let Ok(loop_id) = label.loop_id.into() {
- visitor.visit_def_mention(Def::Label(loop_id));
- }
+ match label.target_id {
+ ScopeTarget::Block(node_id) |
+ ScopeTarget::Loop(LoopIdResult::Ok(node_id)) =>
+ visitor.visit_def_mention(Def::Label(node_id)),
+ ScopeTarget::Loop(LoopIdResult::Err(_)) => {},
+ };
visitor.visit_name(ident.span, ident.node.name);
});
walk_list!(visitor, visit_expr, opt_expr);
}
ExprAgain(label) => {
label.ident.map(|ident| {
- if let Ok(loop_id) = label.loop_id.into() {
- visitor.visit_def_mention(Def::Label(loop_id));
- }
+ match label.target_id {
+ ScopeTarget::Block(_) => bug!("can't `continue` to a non-loop block"),
+ ScopeTarget::Loop(LoopIdResult::Ok(node_id)) =>
+ visitor.visit_def_mention(Def::Label(node_id)),
+ ScopeTarget::Loop(LoopIdResult::Err(_)) => {},
+ };
visitor.visit_name(ident.span, ident.node.name);
});
}