use syntax::abi::RustIntrinsic;
use syntax::ast;
use syntax::codemap::Span;
-use syntax::visit::Visitor;
-use syntax::visit;
+use rustc_front::intravisit::{self, Visitor, FnKind};
+use rustc_front::hir;
pub fn check_crate(tcx: &ctxt) {
let mut visitor = IntrinsicCheckingVisitor {
dummy_sized_ty: tcx.types.isize,
dummy_unsized_ty: tcx.mk_slice(tcx.types.isize),
};
- visit::walk_crate(&mut visitor, tcx.map.krate());
+ tcx.map.krate().visit_all_items(&mut visitor);
}
struct IntrinsicCheckingVisitor<'a, 'tcx: 'a> {
ty::TyBareFn(_, ref bfty) => bfty.abi == RustIntrinsic,
_ => return false
};
- intrinsic && self.tcx.item_name(def_id) == "transmute"
+ intrinsic && self.tcx.item_name(def_id).as_str() == "transmute"
}
fn check_transmute(&self, span: Span, from: Ty<'tcx>, to: Ty<'tcx>, id: ast::NodeId) {
}
impl<'a, 'tcx, 'v> Visitor<'v> for IntrinsicCheckingVisitor<'a, 'tcx> {
- fn visit_fn(&mut self, fk: visit::FnKind<'v>, fd: &'v ast::FnDecl,
- b: &'v ast::Block, s: Span, id: ast::NodeId) {
+ fn visit_fn(&mut self, fk: FnKind<'v>, fd: &'v hir::FnDecl,
+ b: &'v hir::Block, s: Span, id: ast::NodeId) {
match fk {
- visit::FkItemFn(..) | visit::FkMethod(..) => {
+ FnKind::ItemFn(..) | FnKind::Method(..) => {
let param_env = ty::ParameterEnvironment::for_item(self.tcx, id);
self.param_envs.push(param_env);
- visit::walk_fn(self, fk, fd, b, s);
+ intravisit::walk_fn(self, fk, fd, b, s);
self.param_envs.pop();
}
- visit::FkClosure(..) => {
- visit::walk_fn(self, fk, fd, b, s);
+ FnKind::Closure => {
+ intravisit::walk_fn(self, fk, fd, b, s);
}
}
-
}
- fn visit_expr(&mut self, expr: &ast::Expr) {
- if let ast::ExprPath(..) = expr.node {
+ fn visit_expr(&mut self, expr: &hir::Expr) {
+ if let hir::ExprPath(..) = expr.node {
match self.tcx.resolve_expr(expr) {
DefFn(did, _) if self.def_id_is_transmute(did) => {
let typ = self.tcx.node_id_to_type(expr.id);
}
}
- visit::walk_expr(self, expr);
+ intravisit::walk_expr(self, expr);
}
}