about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEduard Burtescu <edy.burt@gmail.com>2016-03-22 17:30:57 +0200
committerEduard Burtescu <edy.burt@gmail.com>2016-03-27 01:05:54 +0200
commit5efdde0de161a5b374e16e20d09322e5a0eba4f9 (patch)
treefc3b089bc6dc81fc25e5bf2db992e8d0e20d7ebc
parent5647586ed362d110a172b405ee381db5d739a480 (diff)
downloadrust-5efdde0de161a5b374e16e20d09322e5a0eba4f9.tar.gz
rust-5efdde0de161a5b374e16e20d09322e5a0eba4f9.zip
rustc: move cfg, infer, traits and ty from middle to top-level.
-rw-r--r--src/librustc/cfg/construct.rs (renamed from src/librustc/middle/cfg/construct.rs)4
-rw-r--r--src/librustc/cfg/graphviz.rs (renamed from src/librustc/middle/cfg/graphviz.rs)2
-rw-r--r--src/librustc/cfg/mod.rs (renamed from src/librustc/middle/cfg/mod.rs)2
-rw-r--r--src/librustc/dep_graph/mod.rs2
-rw-r--r--src/librustc/infer/README.md (renamed from src/librustc/middle/infer/README.md)0
-rw-r--r--src/librustc/infer/bivariate.rs (renamed from src/librustc/middle/infer/bivariate.rs)6
-rw-r--r--src/librustc/infer/combine.rs (renamed from src/librustc/middle/infer/combine.rs)10
-rw-r--r--src/librustc/infer/equate.rs (renamed from src/librustc/middle/infer/equate.rs)6
-rw-r--r--src/librustc/infer/error_reporting.rs (renamed from src/librustc/middle/infer/error_reporting.rs)10
-rw-r--r--src/librustc/infer/freshen.rs (renamed from src/librustc/middle/infer/freshen.rs)4
-rw-r--r--src/librustc/infer/glb.rs (renamed from src/librustc/middle/infer/glb.rs)4
-rw-r--r--src/librustc/infer/higher_ranked/README.md (renamed from src/librustc/middle/infer/higher_ranked/README.md)0
-rw-r--r--src/librustc/infer/higher_ranked/mod.rs (renamed from src/librustc/middle/infer/higher_ranked/mod.rs)6
-rw-r--r--src/librustc/infer/lattice.rs (renamed from src/librustc/middle/infer/lattice.rs)6
-rw-r--r--src/librustc/infer/lub.rs (renamed from src/librustc/middle/infer/lub.rs)4
-rw-r--r--src/librustc/infer/mod.rs (renamed from src/librustc/middle/infer/mod.rs)26
-rw-r--r--src/librustc/infer/region_inference/README.md (renamed from src/librustc/middle/infer/region_inference/README.md)0
-rw-r--r--src/librustc/infer/region_inference/graphviz.rs (renamed from src/librustc/middle/infer/region_inference/graphviz.rs)6
-rw-r--r--src/librustc/infer/region_inference/mod.rs (renamed from src/librustc/middle/infer/region_inference/mod.rs)8
-rw-r--r--src/librustc/infer/resolve.rs (renamed from src/librustc/middle/infer/resolve.rs)2
-rw-r--r--src/librustc/infer/sub.rs (renamed from src/librustc/middle/infer/sub.rs)6
-rw-r--r--src/librustc/infer/type_variable.rs (renamed from src/librustc/middle/infer/type_variable.rs)2
-rw-r--r--src/librustc/infer/unify_key.rs (renamed from src/librustc/middle/infer/unify_key.rs)2
-rw-r--r--src/librustc/lib.rs12
-rw-r--r--src/librustc/lint/context.rs2
-rw-r--r--src/librustc/middle/astconv_util.rs2
-rw-r--r--src/librustc/middle/check_match.rs8
-rw-r--r--src/librustc/middle/const_eval.rs8
-rw-r--r--src/librustc/middle/cstore.rs6
-rw-r--r--src/librustc/middle/dataflow.rs6
-rw-r--r--src/librustc/middle/dead.rs6
-rw-r--r--src/librustc/middle/def.rs2
-rw-r--r--src/librustc/middle/def_id.rs2
-rw-r--r--src/librustc/middle/effect.rs4
-rw-r--r--src/librustc/middle/expr_use_visitor.rs4
-rw-r--r--src/librustc/middle/free_region.rs4
-rw-r--r--src/librustc/middle/intrinsicck.rs6
-rw-r--r--src/librustc/middle/lang_items.rs2
-rw-r--r--src/librustc/middle/liveness.rs8
-rw-r--r--src/librustc/middle/mem_categorization.rs6
-rw-r--r--src/librustc/middle/pat_util.rs2
-rw-r--r--src/librustc/middle/reachable.rs2
-rw-r--r--src/librustc/middle/region.rs10
-rw-r--r--src/librustc/middle/resolve_lifetime.rs4
-rw-r--r--src/librustc/middle/stability.rs2
-rw-r--r--src/librustc/mir/repr.rs4
-rw-r--r--src/librustc/mir/tcx.rs6
-rw-r--r--src/librustc/mir/transform.rs2
-rw-r--r--src/librustc/mir/visit.rs4
-rw-r--r--src/librustc/traits/README.md (renamed from src/librustc/middle/traits/README.md)0
-rw-r--r--src/librustc/traits/coherence.rs (renamed from src/librustc/middle/traits/coherence.rs)6
-rw-r--r--src/librustc/traits/error_reporting.rs (renamed from src/librustc/middle/traits/error_reporting.rs)6
-rw-r--r--src/librustc/traits/fulfill.rs (renamed from src/librustc/middle/traits/fulfill.rs)4
-rw-r--r--src/librustc/traits/mod.rs (renamed from src/librustc/middle/traits/mod.rs)6
-rw-r--r--src/librustc/traits/object_safety.rs (renamed from src/librustc/middle/traits/object_safety.rs)6
-rw-r--r--src/librustc/traits/project.rs (renamed from src/librustc/middle/traits/project.rs)8
-rw-r--r--src/librustc/traits/select.rs (renamed from src/librustc/middle/traits/select.rs)14
-rw-r--r--src/librustc/traits/specialize/mod.rs (renamed from src/librustc/middle/traits/specialize/mod.rs)8
-rw-r--r--src/librustc/traits/specialize/specialization_graph.rs (renamed from src/librustc/middle/traits/specialize/specialization_graph.rs)6
-rw-r--r--src/librustc/traits/structural_impls.rs (renamed from src/librustc/middle/traits/structural_impls.rs)8
-rw-r--r--src/librustc/traits/util.rs (renamed from src/librustc/middle/traits/util.rs)6
-rw-r--r--src/librustc/ty/_match.rs (renamed from src/librustc/middle/ty/_match.rs)6
-rw-r--r--src/librustc/ty/adjustment.rs (renamed from src/librustc/middle/ty/adjustment.rs)4
-rw-r--r--src/librustc/ty/cast.rs (renamed from src/librustc/middle/ty/cast.rs)2
-rw-r--r--src/librustc/ty/contents.rs (renamed from src/librustc/middle/ty/contents.rs)2
-rw-r--r--src/librustc/ty/context.rs (renamed from src/librustc/middle/ty/context.rs)24
-rw-r--r--src/librustc/ty/error.rs (renamed from src/librustc/middle/ty/error.rs)6
-rw-r--r--src/librustc/ty/fast_reject.rs (renamed from src/librustc/middle/ty/fast_reject.rs)2
-rw-r--r--src/librustc/ty/flags.rs (renamed from src/librustc/middle/ty/flags.rs)4
-rw-r--r--src/librustc/ty/fold.rs (renamed from src/librustc/middle/ty/fold.rs)6
-rw-r--r--src/librustc/ty/item_path.rs (renamed from src/librustc/middle/ty/item_path.rs)2
-rw-r--r--src/librustc/ty/ivar.rs (renamed from src/librustc/middle/ty/ivar.rs)4
-rw-r--r--src/librustc/ty/maps.rs (renamed from src/librustc/middle/ty/maps.rs)2
-rw-r--r--src/librustc/ty/mod.rs (renamed from src/librustc/middle/ty/mod.rs)10
-rw-r--r--src/librustc/ty/outlives.rs (renamed from src/librustc/middle/ty/outlives.rs)4
-rw-r--r--src/librustc/ty/relate.rs (renamed from src/librustc/middle/ty/relate.rs)6
-rw-r--r--src/librustc/ty/structural_impls.rs (renamed from src/librustc/middle/ty/structural_impls.rs)8
-rw-r--r--src/librustc/ty/sty.rs (renamed from src/librustc/middle/ty/sty.rs)8
-rw-r--r--src/librustc/ty/subst.rs (renamed from src/librustc/middle/ty/subst.rs)4
-rw-r--r--src/librustc/ty/trait_def.rs (renamed from src/librustc/middle/ty/trait_def.rs)8
-rw-r--r--src/librustc/ty/util.rs (renamed from src/librustc/middle/ty/util.rs)12
-rw-r--r--src/librustc/ty/walk.rs (renamed from src/librustc/middle/ty/walk.rs)2
-rw-r--r--src/librustc/ty/wf.rs (renamed from src/librustc/middle/ty/wf.rs)10
-rw-r--r--src/librustc/util/ppaux.rs16
-rw-r--r--src/librustc_borrowck/borrowck/check_loans.rs6
-rw-r--r--src/librustc_borrowck/borrowck/fragments.rs2
-rw-r--r--src/librustc_borrowck/borrowck/gather_loans/gather_moves.rs2
-rw-r--r--src/librustc_borrowck/borrowck/gather_loans/lifetime.rs2
-rw-r--r--src/librustc_borrowck/borrowck/gather_loans/mod.rs6
-rw-r--r--src/librustc_borrowck/borrowck/gather_loans/move_error.rs2
-rw-r--r--src/librustc_borrowck/borrowck/gather_loans/restrictions.rs2
-rw-r--r--src/librustc_borrowck/borrowck/mir/dataflow.rs4
-rw-r--r--src/librustc_borrowck/borrowck/mir/gather_moves.rs2
-rw-r--r--src/librustc_borrowck/borrowck/mod.rs4
-rw-r--r--src/librustc_borrowck/borrowck/move_data.rs4
-rw-r--r--src/librustc_borrowck/graphviz.rs6
-rw-r--r--src/librustc_driver/driver.rs4
-rw-r--r--src/librustc_driver/pretty.rs6
-rw-r--r--src/librustc_driver/test.rs30
-rw-r--r--src/librustc_lint/bad_style.rs2
-rw-r--r--src/librustc_lint/builtin.rs11
-rw-r--r--src/librustc_lint/types.rs6
-rw-r--r--src/librustc_lint/unused.rs4
-rw-r--r--src/librustc_metadata/astencode.rs8
-rw-r--r--src/librustc_metadata/csearch.rs2
-rw-r--r--src/librustc_metadata/decoder.rs6
-rw-r--r--src/librustc_metadata/encoder.rs8
-rw-r--r--src/librustc_metadata/tls_context.rs4
-rw-r--r--src/librustc_metadata/tydecode.rs6
-rw-r--r--src/librustc_metadata/tyencode.rs8
-rw-r--r--src/librustc_mir/build/expr/into.rs2
-rw-r--r--src/librustc_mir/build/matches/mod.rs2
-rw-r--r--src/librustc_mir/build/matches/test.rs2
-rw-r--r--src/librustc_mir/build/misc.rs2
-rw-r--r--src/librustc_mir/build/mod.rs2
-rw-r--r--src/librustc_mir/build/scope.rs4
-rw-r--r--src/librustc_mir/graphviz.rs2
-rw-r--r--src/librustc_mir/hair/cx/expr.rs2
-rw-r--r--src/librustc_mir/hair/cx/mod.rs6
-rw-r--r--src/librustc_mir/hair/cx/pattern.rs2
-rw-r--r--src/librustc_mir/hair/mod.rs4
-rw-r--r--src/librustc_mir/mir_map.rs6
-rw-r--r--src/librustc_mir/pretty.rs2
-rw-r--r--src/librustc_mir/transform/erase_regions.rs4
-rw-r--r--src/librustc_mir/transform/no_landing_pads.rs2
-rw-r--r--src/librustc_mir/transform/remove_dead_blocks.rs2
-rw-r--r--src/librustc_mir/transform/simplify_cfg.rs2
-rw-r--r--src/librustc_mir/transform/type_check.rs8
-rw-r--r--src/librustc_passes/consts.rs8
-rw-r--r--src/librustc_passes/rvalues.rs6
-rw-r--r--src/librustc_platform_intrinsics/aarch64.rs2
-rw-r--r--src/librustc_platform_intrinsics/arm.rs2
-rw-r--r--src/librustc_platform_intrinsics/lib.rs2
-rw-r--r--src/librustc_platform_intrinsics/x86.rs2
-rw-r--r--src/librustc_privacy/lib.rs2
-rw-r--r--src/librustc_resolve/build_reduced_graph.rs2
-rw-r--r--src/librustc_resolve/lib.rs4
-rw-r--r--src/librustc_trans/back/symbol_names.rs4
-rw-r--r--src/librustc_trans/save/data.rs2
-rw-r--r--src/librustc_trans/save/dump_visitor.rs2
-rw-r--r--src/librustc_trans/save/mod.rs2
-rw-r--r--src/librustc_trans/trans/_match.rs8
-rw-r--r--src/librustc_trans/trans/abi.rs4
-rw-r--r--src/librustc_trans/trans/adt.rs4
-rw-r--r--src/librustc_trans/trans/assert_dep_graph.rs2
-rw-r--r--src/librustc_trans/trans/base.rs12
-rw-r--r--src/librustc_trans/trans/callee.rs10
-rw-r--r--src/librustc_trans/trans/cleanup.rs2
-rw-r--r--src/librustc_trans/trans/closure.rs6
-rw-r--r--src/librustc_trans/trans/collector.rs10
-rw-r--r--src/librustc_trans/trans/common.rs12
-rw-r--r--src/librustc_trans/trans/consts.rs10
-rw-r--r--src/librustc_trans/trans/context.rs6
-rw-r--r--src/librustc_trans/trans/controlflow.rs2
-rw-r--r--src/librustc_trans/trans/datum.rs2
-rw-r--r--src/librustc_trans/trans/debuginfo/metadata.rs6
-rw-r--r--src/librustc_trans/trans/debuginfo/mod.rs8
-rw-r--r--src/librustc_trans/trans/debuginfo/type_names.rs6
-rw-r--r--src/librustc_trans/trans/declare.rs4
-rw-r--r--src/librustc_trans/trans/disr.rs4
-rw-r--r--src/librustc_trans/trans/expr.rs20
-rw-r--r--src/librustc_trans/trans/glue.rs6
-rw-r--r--src/librustc_trans/trans/inline.rs2
-rw-r--r--src/librustc_trans/trans/intrinsic.rs14
-rw-r--r--src/librustc_trans/trans/meth.rs10
-rw-r--r--src/librustc_trans/trans/mir/block.rs2
-rw-r--r--src/librustc_trans/trans/mir/constant.rs2
-rw-r--r--src/librustc_trans/trans/mir/drop.rs2
-rw-r--r--src/librustc_trans/trans/mir/lvalue.rs2
-rw-r--r--src/librustc_trans/trans/mir/mod.rs2
-rw-r--r--src/librustc_trans/trans/mir/operand.rs2
-rw-r--r--src/librustc_trans/trans/mir/rvalue.rs4
-rw-r--r--src/librustc_trans/trans/monomorphize.rs9
-rw-r--r--src/librustc_trans/trans/symbol_names_test.rs2
-rw-r--r--src/librustc_trans/trans/tvec.rs2
-rw-r--r--src/librustc_trans/trans/type_of.rs10
-rw-r--r--src/librustc_typeck/astconv.rs8
-rw-r--r--src/librustc_typeck/check/_match.rs6
-rw-r--r--src/librustc_typeck/check/assoc.rs6
-rw-r--r--src/librustc_typeck/check/callee.rs4
-rw-r--r--src/librustc_typeck/check/cast.rs8
-rw-r--r--src/librustc_typeck/check/closure.rs4
-rw-r--r--src/librustc_typeck/check/coercion.rs20
-rw-r--r--src/librustc_typeck/check/compare_method.rs8
-rw-r--r--src/librustc_typeck/check/demand.rs4
-rw-r--r--src/librustc_typeck/check/dropck.rs8
-rw-r--r--src/librustc_typeck/check/intrinsic.rs8
-rw-r--r--src/librustc_typeck/check/method/confirm.rs14
-rw-r--r--src/librustc_typeck/check/method/mod.rs10
-rw-r--r--src/librustc_typeck/check/method/probe.rs12
-rw-r--r--src/librustc_typeck/check/method/suggest.rs6
-rw-r--r--src/librustc_typeck/check/mod.rs40
-rw-r--r--src/librustc_typeck/check/op.rs4
-rw-r--r--src/librustc_typeck/check/regionck.rs12
-rw-r--r--src/librustc_typeck/check/upvar.rs4
-rw-r--r--src/librustc_typeck/check/wfcheck.rs8
-rw-r--r--src/librustc_typeck/check/writeback.rs8
-rw-r--r--src/librustc_typeck/coherence/mod.rs26
-rw-r--r--src/librustc_typeck/coherence/orphan.rs4
-rw-r--r--src/librustc_typeck/coherence/overlap.rs6
-rw-r--r--src/librustc_typeck/coherence/unsafety.rs2
-rw-r--r--src/librustc_typeck/collect.rs12
-rw-r--r--src/librustc_typeck/constrained_type_params.rs4
-rw-r--r--src/librustc_typeck/lib.rs8
-rw-r--r--src/librustc_typeck/rscope.rs2
-rw-r--r--src/librustc_typeck/variance/constraints.rs8
-rw-r--r--src/librustc_typeck/variance/mod.rs2
-rw-r--r--src/librustc_typeck/variance/solve.rs4
-rw-r--r--src/librustc_typeck/variance/terms.rs6
-rw-r--r--src/librustc_typeck/variance/xform.rs2
-rw-r--r--src/librustdoc/clean/inline.rs4
-rw-r--r--src/librustdoc/clean/mod.rs6
-rw-r--r--src/librustdoc/clean/simplify.rs4
-rw-r--r--src/librustdoc/core.rs2
-rw-r--r--src/test/auxiliary/dummy_mir_pass.rs2
-rw-r--r--src/test/compile-fail/moves-based-on-type-cyclic-types-issue-4821.rs2
-rw-r--r--src/test/run-make/execution-engine/test.rs2
217 files changed, 617 insertions, 617 deletions
diff --git a/src/librustc/middle/cfg/construct.rs b/src/librustc/cfg/construct.rs
index dcfa8d1e36a..e75625f7fae 100644
--- a/src/librustc/middle/cfg/construct.rs
+++ b/src/librustc/cfg/construct.rs
@@ -9,10 +9,10 @@
 // except according to those terms.
 
 use rustc_data_structures::graph;
-use middle::cfg::*;
+use cfg::*;
 use middle::def::Def;
 use middle::pat_util;
-use middle::ty::{self, TyCtxt};
+use ty::{self, TyCtxt};
 use syntax::ast;
 use syntax::ptr::P;
 
diff --git a/src/librustc/middle/cfg/graphviz.rs b/src/librustc/cfg/graphviz.rs
index c9c712c2d6e..c867ec94b25 100644
--- a/src/librustc/middle/cfg/graphviz.rs
+++ b/src/librustc/cfg/graphviz.rs
@@ -18,7 +18,7 @@ use graphviz::IntoCow;
 use syntax::ast;
 
 use front::map as ast_map;
-use middle::cfg;
+use cfg;
 
 pub type Node<'a> = (cfg::CFGIndex, &'a cfg::CFGNode);
 pub type Edge<'a> = &'a cfg::CFGEdge;
diff --git a/src/librustc/middle/cfg/mod.rs b/src/librustc/cfg/mod.rs
index 394633c5911..8df4dc5fce5 100644
--- a/src/librustc/middle/cfg/mod.rs
+++ b/src/librustc/cfg/mod.rs
@@ -12,7 +12,7 @@
 //! Uses `Graph` as the underlying representation.
 
 use rustc_data_structures::graph;
-use middle::ty::TyCtxt;
+use ty::TyCtxt;
 use syntax::ast;
 use rustc_front::hir;
 
diff --git a/src/librustc/dep_graph/mod.rs b/src/librustc/dep_graph/mod.rs
index 821217d7582..731c33868df 100644
--- a/src/librustc/dep_graph/mod.rs
+++ b/src/librustc/dep_graph/mod.rs
@@ -11,7 +11,7 @@
 use self::thread::{DepGraphThreadData, DepMessage};
 use middle::def_id::DefId;
 use syntax::ast::NodeId;
-use middle::ty::TyCtxt;
+use ty::TyCtxt;
 use rustc_front::hir;
 use rustc_front::intravisit::Visitor;
 use std::rc::Rc;
diff --git a/src/librustc/middle/infer/README.md b/src/librustc/infer/README.md
index c835189820e..c835189820e 100644
--- a/src/librustc/middle/infer/README.md
+++ b/src/librustc/infer/README.md
diff --git a/src/librustc/middle/infer/bivariate.rs b/src/librustc/infer/bivariate.rs
index 76a87675e3d..a9ea395e6b3 100644
--- a/src/librustc/middle/infer/bivariate.rs
+++ b/src/librustc/infer/bivariate.rs
@@ -28,9 +28,9 @@
 use super::combine::{self, CombineFields};
 use super::type_variable::{BiTo};
 
-use middle::ty::{self, Ty, TyCtxt};
-use middle::ty::TyVar;
-use middle::ty::relate::{Relate, RelateResult, TypeRelation};
+use ty::{self, Ty, TyCtxt};
+use ty::TyVar;
+use ty::relate::{Relate, RelateResult, TypeRelation};
 
 pub struct Bivariate<'a, 'tcx: 'a> {
     fields: CombineFields<'a, 'tcx>
diff --git a/src/librustc/middle/infer/combine.rs b/src/librustc/infer/combine.rs
index f67389e3c3b..2b30698882d 100644
--- a/src/librustc/middle/infer/combine.rs
+++ b/src/librustc/infer/combine.rs
@@ -41,11 +41,11 @@ use super::{InferCtxt};
 use super::{MiscVariable, TypeTrace};
 use super::type_variable::{RelationDir, BiTo, EqTo, SubtypeOf, SupertypeOf};
 
-use middle::ty::{IntType, UintType};
-use middle::ty::{self, Ty, TyCtxt};
-use middle::ty::error::TypeError;
-use middle::ty::fold::{TypeFolder, TypeFoldable};
-use middle::ty::relate::{Relate, RelateResult, TypeRelation};
+use ty::{IntType, UintType};
+use ty::{self, Ty, TyCtxt};
+use ty::error::TypeError;
+use ty::fold::{TypeFolder, TypeFoldable};
+use ty::relate::{Relate, RelateResult, TypeRelation};
 
 use syntax::ast;
 use syntax::codemap::Span;
diff --git a/src/librustc/middle/infer/equate.rs b/src/librustc/infer/equate.rs
index dd576c75ba3..3c9c9c57884 100644
--- a/src/librustc/middle/infer/equate.rs
+++ b/src/librustc/infer/equate.rs
@@ -13,9 +13,9 @@ use super::higher_ranked::HigherRankedRelations;
 use super::{Subtype};
 use super::type_variable::{EqTo};
 
-use middle::ty::{self, Ty, TyCtxt};
-use middle::ty::TyVar;
-use middle::ty::relate::{Relate, RelateResult, TypeRelation};
+use ty::{self, Ty, TyCtxt};
+use ty::TyVar;
+use ty::relate::{Relate, RelateResult, TypeRelation};
 
 /// Ensures `a` is made equal to `b`. Returns `a` on success.
 pub struct Equate<'a, 'tcx: 'a> {
diff --git a/src/librustc/middle/infer/error_reporting.rs b/src/librustc/infer/error_reporting.rs
index 7a1da774531..20c01344144 100644
--- a/src/librustc/middle/infer/error_reporting.rs
+++ b/src/librustc/infer/error_reporting.rs
@@ -80,12 +80,12 @@ use rustc_front::print::pprust;
 use middle::cstore::CrateStore;
 use middle::def::Def;
 use middle::def_id::DefId;
-use middle::infer::{self, TypeOrigin};
+use infer::{self, TypeOrigin};
 use middle::region;
-use middle::ty::subst;
-use middle::ty::{self, Ty, TyCtxt, TypeFoldable};
-use middle::ty::{Region, ReFree};
-use middle::ty::error::TypeError;
+use ty::subst;
+use ty::{self, Ty, TyCtxt, TypeFoldable};
+use ty::{Region, ReFree};
+use ty::error::TypeError;
 
 use std::cell::{Cell, RefCell};
 use std::char::from_u32;
diff --git a/src/librustc/middle/infer/freshen.rs b/src/librustc/infer/freshen.rs
index b0f6d45dc53..352733a595d 100644
--- a/src/librustc/middle/infer/freshen.rs
+++ b/src/librustc/infer/freshen.rs
@@ -30,8 +30,8 @@
 //! variable only once, and it does so as soon as it can, so it is reasonable to ask what the type
 //! inferencer knows "so far".
 
-use middle::ty::{self, Ty, TyCtxt, TypeFoldable};
-use middle::ty::fold::TypeFolder;
+use ty::{self, Ty, TyCtxt, TypeFoldable};
+use ty::fold::TypeFolder;
 use std::collections::hash_map::{self, Entry};
 
 use super::InferCtxt;
diff --git a/src/librustc/middle/infer/glb.rs b/src/librustc/infer/glb.rs
index 7779be896cf..235428a6898 100644
--- a/src/librustc/middle/infer/glb.rs
+++ b/src/librustc/infer/glb.rs
@@ -14,8 +14,8 @@ use super::InferCtxt;
 use super::lattice::{self, LatticeDir};
 use super::Subtype;
 
-use middle::ty::{self, Ty, TyCtxt};
-use middle::ty::relate::{Relate, RelateResult, TypeRelation};
+use ty::{self, Ty, TyCtxt};
+use ty::relate::{Relate, RelateResult, TypeRelation};
 
 /// "Greatest lower bound" (common subtype)
 pub struct Glb<'a, 'tcx: 'a> {
diff --git a/src/librustc/middle/infer/higher_ranked/README.md b/src/librustc/infer/higher_ranked/README.md
index 57665b6d939..57665b6d939 100644
--- a/src/librustc/middle/infer/higher_ranked/README.md
+++ b/src/librustc/infer/higher_ranked/README.md
diff --git a/src/librustc/middle/infer/higher_ranked/mod.rs b/src/librustc/infer/higher_ranked/mod.rs
index 44ba6ec4a7a..db4ee17bafb 100644
--- a/src/librustc/middle/infer/higher_ranked/mod.rs
+++ b/src/librustc/infer/higher_ranked/mod.rs
@@ -14,9 +14,9 @@
 use super::{CombinedSnapshot, InferCtxt, HigherRankedType, SkolemizationMap};
 use super::combine::CombineFields;
 
-use middle::ty::{self, TyCtxt, Binder, TypeFoldable};
-use middle::ty::error::TypeError;
-use middle::ty::relate::{Relate, RelateResult, TypeRelation};
+use ty::{self, TyCtxt, Binder, TypeFoldable};
+use ty::error::TypeError;
+use ty::relate::{Relate, RelateResult, TypeRelation};
 use syntax::codemap::Span;
 use util::nodemap::{FnvHashMap, FnvHashSet};
 
diff --git a/src/librustc/middle/infer/lattice.rs b/src/librustc/infer/lattice.rs
index dc4cbd14a5d..17ad32e742e 100644
--- a/src/librustc/middle/infer/lattice.rs
+++ b/src/librustc/infer/lattice.rs
@@ -32,9 +32,9 @@
 use super::combine;
 use super::InferCtxt;
 
-use middle::ty::TyVar;
-use middle::ty::{self, Ty};
-use middle::ty::relate::{RelateResult, TypeRelation};
+use ty::TyVar;
+use ty::{self, Ty};
+use ty::relate::{RelateResult, TypeRelation};
 
 pub trait LatticeDir<'f,'tcx> : TypeRelation<'f,'tcx> {
     fn infcx(&self) -> &'f InferCtxt<'f, 'tcx>;
diff --git a/src/librustc/middle/infer/lub.rs b/src/librustc/infer/lub.rs
index 7202e4afc5a..00b85929b4b 100644
--- a/src/librustc/middle/infer/lub.rs
+++ b/src/librustc/infer/lub.rs
@@ -14,8 +14,8 @@ use super::InferCtxt;
 use super::lattice::{self, LatticeDir};
 use super::Subtype;
 
-use middle::ty::{self, Ty, TyCtxt};
-use middle::ty::relate::{Relate, RelateResult, TypeRelation};
+use ty::{self, Ty, TyCtxt};
+use ty::relate::{Relate, RelateResult, TypeRelation};
 
 /// "Least upper bound" (common supertype)
 pub struct Lub<'a, 'tcx: 'a> {
diff --git a/src/librustc/middle/infer/mod.rs b/src/librustc/infer/mod.rs
index ea11ade1d16..bc4c9fd2ccf 100644
--- a/src/librustc/middle/infer/mod.rs
+++ b/src/librustc/infer/mod.rs
@@ -14,7 +14,7 @@ pub use self::LateBoundRegionConversionTime::*;
 pub use self::RegionVariableOrigin::*;
 pub use self::SubregionOrigin::*;
 pub use self::ValuePairs::*;
-pub use middle::ty::IntVarValue;
+pub use ty::IntVarValue;
 pub use self::freshen::TypeFreshener;
 pub use self::region_inference::{GenericKind, VerifyBound};
 
@@ -24,16 +24,16 @@ use middle::free_region::FreeRegionMap;
 use middle::mem_categorization as mc;
 use middle::mem_categorization::McResult;
 use middle::region::CodeExtent;
-use middle::ty::subst;
-use middle::ty::subst::Substs;
-use middle::ty::subst::Subst;
-use middle::traits::{self, ProjectionMode};
-use middle::ty::adjustment;
-use middle::ty::{TyVid, IntVid, FloatVid};
-use middle::ty::{self, Ty, TyCtxt};
-use middle::ty::error::{ExpectedFound, TypeError, UnconstrainedNumeric};
-use middle::ty::fold::{TypeFolder, TypeFoldable};
-use middle::ty::relate::{Relate, RelateResult, TypeRelation};
+use ty::subst;
+use ty::subst::Substs;
+use ty::subst::Subst;
+use traits::{self, ProjectionMode};
+use ty::adjustment;
+use ty::{TyVid, IntVid, FloatVid};
+use ty::{self, Ty, TyCtxt};
+use ty::error::{ExpectedFound, TypeError, UnconstrainedNumeric};
+use ty::fold::{TypeFolder, TypeFoldable};
+use ty::relate::{Relate, RelateResult, TypeRelation};
 use rustc_data_structures::unify::{self, UnificationTable};
 use std::cell::{RefCell, Ref};
 use std::fmt;
@@ -622,8 +622,8 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
     }
 
     pub fn type_is_unconstrained_numeric(&'a self, ty: Ty) -> UnconstrainedNumeric {
-        use middle::ty::error::UnconstrainedNumeric::Neither;
-        use middle::ty::error::UnconstrainedNumeric::{UnconstrainedInt, UnconstrainedFloat};
+        use ty::error::UnconstrainedNumeric::Neither;
+        use ty::error::UnconstrainedNumeric::{UnconstrainedInt, UnconstrainedFloat};
         match ty.sty {
             ty::TyInfer(ty::IntVar(vid)) => {
                 if self.int_unification_table.borrow_mut().has_value(vid) {
diff --git a/src/librustc/middle/infer/region_inference/README.md b/src/librustc/infer/region_inference/README.md
index 80da861139b..80da861139b 100644
--- a/src/librustc/middle/infer/region_inference/README.md
+++ b/src/librustc/infer/region_inference/README.md
diff --git a/src/librustc/middle/infer/region_inference/graphviz.rs b/src/librustc/infer/region_inference/graphviz.rs
index 23559e7b340..e561f4a3548 100644
--- a/src/librustc/middle/infer/region_inference/graphviz.rs
+++ b/src/librustc/infer/region_inference/graphviz.rs
@@ -18,11 +18,11 @@
 /// For clarity, rename the graphviz crate locally to dot.
 use graphviz as dot;
 
-use middle::ty::{self, TyCtxt};
+use ty::{self, TyCtxt};
 use middle::region::CodeExtent;
 use super::Constraint;
-use middle::infer::SubregionOrigin;
-use middle::infer::region_inference::RegionVarBindings;
+use infer::SubregionOrigin;
+use infer::region_inference::RegionVarBindings;
 use util::nodemap::{FnvHashMap, FnvHashSet};
 
 use std::borrow::Cow;
diff --git a/src/librustc/middle/infer/region_inference/mod.rs b/src/librustc/infer/region_inference/mod.rs
index 7bba495e467..2b74dcb40c4 100644
--- a/src/librustc/middle/infer/region_inference/mod.rs
+++ b/src/librustc/infer/region_inference/mod.rs
@@ -23,10 +23,10 @@ use super::unify_key;
 use rustc_data_structures::graph::{self, Direction, NodeIndex};
 use rustc_data_structures::unify::{self, UnificationTable};
 use middle::free_region::FreeRegionMap;
-use middle::ty::{self, Ty, TyCtxt};
-use middle::ty::{BoundRegion, Region, RegionVid};
-use middle::ty::{ReEmpty, ReStatic, ReFree, ReEarlyBound};
-use middle::ty::{ReLateBound, ReScope, ReVar, ReSkolemized, BrFresh};
+use ty::{self, Ty, TyCtxt};
+use ty::{BoundRegion, Region, RegionVid};
+use ty::{ReEmpty, ReStatic, ReFree, ReEarlyBound};
+use ty::{ReLateBound, ReScope, ReVar, ReSkolemized, BrFresh};
 use util::common::indenter;
 use util::nodemap::{FnvHashMap, FnvHashSet};
 
diff --git a/src/librustc/middle/infer/resolve.rs b/src/librustc/infer/resolve.rs
index 8c610589844..c54843410ad 100644
--- a/src/librustc/middle/infer/resolve.rs
+++ b/src/librustc/infer/resolve.rs
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 use super::{InferCtxt, FixupError, FixupResult};
-use middle::ty::{self, Ty, TyCtxt, TypeFoldable};
+use ty::{self, Ty, TyCtxt, TypeFoldable};
 
 ///////////////////////////////////////////////////////////////////////////
 // OPPORTUNISTIC TYPE RESOLVER
diff --git a/src/librustc/middle/infer/sub.rs b/src/librustc/infer/sub.rs
index e94311697c3..0505c9d627b 100644
--- a/src/librustc/middle/infer/sub.rs
+++ b/src/librustc/infer/sub.rs
@@ -13,9 +13,9 @@ use super::higher_ranked::HigherRankedRelations;
 use super::SubregionOrigin;
 use super::type_variable::{SubtypeOf, SupertypeOf};
 
-use middle::ty::{self, Ty, TyCtxt};
-use middle::ty::TyVar;
-use middle::ty::relate::{Cause, Relate, RelateResult, TypeRelation};
+use ty::{self, Ty, TyCtxt};
+use ty::TyVar;
+use ty::relate::{Cause, Relate, RelateResult, TypeRelation};
 use std::mem;
 
 /// Ensures `a` is made a subtype of `b`. Returns `a` on success.
diff --git a/src/librustc/middle/infer/type_variable.rs b/src/librustc/infer/type_variable.rs
index fe66ea5a1ea..c8da346085d 100644
--- a/src/librustc/middle/infer/type_variable.rs
+++ b/src/librustc/infer/type_variable.rs
@@ -12,7 +12,7 @@ pub use self::RelationDir::*;
 use self::TypeVariableValue::*;
 use self::UndoEntry::*;
 use middle::def_id::{DefId};
-use middle::ty::{self, Ty};
+use ty::{self, Ty};
 use syntax::codemap::Span;
 
 use std::cmp::min;
diff --git a/src/librustc/middle/infer/unify_key.rs b/src/librustc/infer/unify_key.rs
index 3f8c3fbce04..a9eb20b8299 100644
--- a/src/librustc/middle/infer/unify_key.rs
+++ b/src/librustc/infer/unify_key.rs
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 use syntax::ast;
-use middle::ty::{self, IntVarValue, Ty, TyCtxt};
+use ty::{self, IntVarValue, Ty, TyCtxt};
 use rustc_data_structures::unify::{Combine, UnifyKey};
 
 pub trait ToType<'tcx> {
diff --git a/src/librustc/lib.rs b/src/librustc/lib.rs
index 37b6ea7872a..4fdfe59e2b0 100644
--- a/src/librustc/lib.rs
+++ b/src/librustc/lib.rs
@@ -78,6 +78,7 @@ pub mod back {
     pub use rustc_back::svh;
 }
 
+pub mod cfg;
 pub mod dep_graph;
 
 pub mod front {
@@ -85,10 +86,12 @@ pub mod front {
     pub mod map;
 }
 
+pub mod infer;
+pub mod lint;
+
 pub mod middle {
     pub mod astconv_util;
     pub mod expr_use_visitor; // STAGE0: increase glitch immunity
-    pub mod cfg;
     pub mod check_match;
     pub mod const_eval;
     pub mod const_qualif;
@@ -102,7 +105,6 @@ pub mod middle {
     pub mod entry;
     pub mod free_region;
     pub mod intrinsicck;
-    pub mod infer;
     pub mod lang_items;
     pub mod liveness;
     pub mod mem_categorization;
@@ -113,8 +115,6 @@ pub mod middle {
     pub mod recursion_limit;
     pub mod resolve_lifetime;
     pub mod stability;
-    pub mod traits;
-    pub mod ty;
     pub mod weak_lang_items;
 }
 
@@ -127,8 +127,8 @@ pub mod mir {
 }
 
 pub mod session;
-
-pub mod lint;
+pub mod traits;
+pub mod ty;
 
 pub mod util {
     pub use rustc_back::sha2;
diff --git a/src/librustc/lint/context.rs b/src/librustc/lint/context.rs
index 079a0c94cc5..8224422d45c 100644
--- a/src/librustc/lint/context.rs
+++ b/src/librustc/lint/context.rs
@@ -27,7 +27,7 @@ use self::TargetLint::*;
 
 use dep_graph::DepNode;
 use middle::privacy::AccessLevels;
-use middle::ty::TyCtxt;
+use ty::TyCtxt;
 use session::{config, early_error, Session};
 use lint::{Level, LevelSource, Lint, LintId, LintArray, LintPass};
 use lint::{EarlyLintPass, EarlyLintPassObject, LateLintPass, LateLintPassObject};
diff --git a/src/librustc/middle/astconv_util.rs b/src/librustc/middle/astconv_util.rs
index e17aaaca16e..a6907aad297 100644
--- a/src/librustc/middle/astconv_util.rs
+++ b/src/librustc/middle/astconv_util.rs
@@ -15,7 +15,7 @@
  */
 
 use middle::def::Def;
-use middle::ty::{Ty, TyCtxt};
+use ty::{Ty, TyCtxt};
 
 use syntax::codemap::Span;
 use rustc_front::hir as ast;
diff --git a/src/librustc/middle/check_match.rs b/src/librustc/middle/check_match.rs
index 3414d509d95..79e4b7c0901 100644
--- a/src/librustc/middle/check_match.rs
+++ b/src/librustc/middle/check_match.rs
@@ -22,12 +22,12 @@ use middle::def_id::{DefId};
 use middle::expr_use_visitor::{ConsumeMode, Delegate, ExprUseVisitor};
 use middle::expr_use_visitor::{LoanCause, MutateMode};
 use middle::expr_use_visitor as euv;
-use middle::infer;
+use infer;
 use middle::mem_categorization::{cmt};
 use middle::pat_util::*;
-use middle::traits::ProjectionMode;
-use middle::ty::*;
-use middle::ty;
+use traits::ProjectionMode;
+use ty::*;
+use ty;
 use std::cmp::Ordering;
 use std::fmt;
 use std::iter::{FromIterator, IntoIterator, repeat};
diff --git a/src/librustc/middle/const_eval.rs b/src/librustc/middle/const_eval.rs
index 5c881bcb396..fca2904979c 100644
--- a/src/librustc/middle/const_eval.rs
+++ b/src/librustc/middle/const_eval.rs
@@ -18,13 +18,13 @@ use front::map as ast_map;
 use front::map::blocks::FnLikeNode;
 use lint;
 use middle::cstore::{self, CrateStore, InlinedItem};
-use middle::{infer, traits};
+use {infer, traits};
 use middle::def::Def;
 use middle::def_id::DefId;
 use middle::pat_util::def_to_path;
-use middle::ty::{self, subst, Ty, TyCtxt};
-use middle::ty::util::IntTypeExt;
-use middle::traits::ProjectionMode;
+use ty::{self, subst, Ty, TyCtxt};
+use ty::util::IntTypeExt;
+use traits::ProjectionMode;
 use middle::astconv_util::ast_ty_to_prim_ty;
 use util::nodemap::NodeMap;
 
diff --git a/src/librustc/middle/cstore.rs b/src/librustc/middle/cstore.rs
index aada2ca2743..a0dacd62268 100644
--- a/src/librustc/middle/cstore.rs
+++ b/src/librustc/middle/cstore.rs
@@ -26,7 +26,7 @@ use back::svh::Svh;
 use front::map as hir_map;
 use middle::def::{self, Def};
 use middle::lang_items;
-use middle::ty::{self, Ty, TyCtxt, VariantKind};
+use ty::{self, Ty, TyCtxt, VariantKind};
 use middle::def_id::{DefId, DefIndex};
 use mir::repr::Mir;
 use mir::mir_map::MirMap;
@@ -498,8 +498,8 @@ pub mod tls {
     use serialize;
     use std::cell::Cell;
     use std::mem;
-    use middle::ty::{self, Ty, TyCtxt};
-    use middle::ty::subst::Substs;
+    use ty::{self, Ty, TyCtxt};
+    use ty::subst::Substs;
     use middle::def_id::DefId;
 
     pub trait EncodingContext<'tcx> {
diff --git a/src/librustc/middle/dataflow.rs b/src/librustc/middle/dataflow.rs
index d8cffa3c2c9..6468187e219 100644
--- a/src/librustc/middle/dataflow.rs
+++ b/src/librustc/middle/dataflow.rs
@@ -14,9 +14,9 @@
 //! and thus uses bitvectors. Your job is simply to specify the so-called
 //! GEN and KILL bits for each expression.
 
-use middle::cfg;
-use middle::cfg::CFGIndex;
-use middle::ty::TyCtxt;
+use cfg;
+use cfg::CFGIndex;
+use ty::TyCtxt;
 use std::io;
 use std::mem;
 use std::usize;
diff --git a/src/librustc/middle/dead.rs b/src/librustc/middle/dead.rs
index 4ceac287d19..2b8ed14701d 100644
--- a/src/librustc/middle/dead.rs
+++ b/src/librustc/middle/dead.rs
@@ -17,8 +17,8 @@ use front::map as ast_map;
 use rustc_front::hir::{self, PatKind};
 use rustc_front::intravisit::{self, Visitor};
 
-use middle::{pat_util, privacy, ty};
-use middle::ty::TyCtxt;
+use middle::{pat_util, privacy};
+use ty::{self, TyCtxt};
 use middle::def::Def;
 use middle::def_id::{DefId};
 use lint;
@@ -84,7 +84,7 @@ impl<'a, 'tcx> MarkSymbolVisitor<'a, 'tcx> {
     }
 
     fn lookup_and_handle_definition(&mut self, id: &ast::NodeId) {
-        use middle::ty::TypeVariants::{TyEnum, TyStruct};
+        use ty::TypeVariants::{TyEnum, TyStruct};
 
         // If `bar` is a trait item, make sure to mark Foo as alive in `Foo::bar`
         self.tcx.tables.borrow().item_substs.get(id)
diff --git a/src/librustc/middle/def.rs b/src/librustc/middle/def.rs
index f832a871c8b..6cbcd41d84a 100644
--- a/src/librustc/middle/def.rs
+++ b/src/librustc/middle/def.rs
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 use middle::def_id::DefId;
-use middle::ty::subst::ParamSpace;
+use ty::subst::ParamSpace;
 use util::nodemap::NodeMap;
 use syntax::ast;
 use rustc_front::hir;
diff --git a/src/librustc/middle/def_id.rs b/src/librustc/middle/def_id.rs
index f5bdf28a4b1..a3b83ec5be4 100644
--- a/src/librustc/middle/def_id.rs
+++ b/src/librustc/middle/def_id.rs
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 use middle::cstore::LOCAL_CRATE;
-use middle::ty;
+use ty;
 use syntax::ast::CrateNum;
 use std::fmt;
 use std::u32;
diff --git a/src/librustc/middle/effect.rs b/src/librustc/middle/effect.rs
index d4ff4b797c8..fa949073f4e 100644
--- a/src/librustc/middle/effect.rs
+++ b/src/librustc/middle/effect.rs
@@ -14,8 +14,8 @@ use self::RootUnsafeContext::*;
 
 use dep_graph::DepNode;
 use middle::def::Def;
-use middle::ty::{self, Ty, TyCtxt};
-use middle::ty::MethodCall;
+use ty::{self, Ty, TyCtxt};
+use ty::MethodCall;
 
 use syntax::ast;
 use syntax::codemap::Span;
diff --git a/src/librustc/middle/expr_use_visitor.rs b/src/librustc/middle/expr_use_visitor.rs
index ded64fa1d30..744022d1d5e 100644
--- a/src/librustc/middle/expr_use_visitor.rs
+++ b/src/librustc/middle/expr_use_visitor.rs
@@ -22,9 +22,9 @@ use self::OverloadedCallType::*;
 use middle::pat_util;
 use middle::def::Def;
 use middle::def_id::{DefId};
-use middle::infer;
+use infer;
 use middle::mem_categorization as mc;
-use middle::ty::{self, TyCtxt, adjustment};
+use ty::{self, TyCtxt, adjustment};
 
 use rustc_front::hir::{self, PatKind};
 
diff --git a/src/librustc/middle/free_region.rs b/src/librustc/middle/free_region.rs
index cb45a3e2507..20f2c5ad43f 100644
--- a/src/librustc/middle/free_region.rs
+++ b/src/librustc/middle/free_region.rs
@@ -15,8 +15,8 @@
 //! `TransitiveRelation` type and use that to decide when one free
 //! region outlives another and so forth.
 
-use middle::ty::{self, TyCtxt, FreeRegion, Region};
-use middle::ty::wf::ImpliedBound;
+use ty::{self, TyCtxt, FreeRegion, Region};
+use ty::wf::ImpliedBound;
 use rustc_data_structures::transitive_relation::TransitiveRelation;
 
 #[derive(Clone)]
diff --git a/src/librustc/middle/intrinsicck.rs b/src/librustc/middle/intrinsicck.rs
index e3da34acb4b..939ea91cdd4 100644
--- a/src/librustc/middle/intrinsicck.rs
+++ b/src/librustc/middle/intrinsicck.rs
@@ -11,9 +11,9 @@
 use dep_graph::DepNode;
 use middle::def::Def;
 use middle::def_id::DefId;
-use middle::ty::subst::{Subst, Substs, EnumeratedItems};
-use middle::ty::{TransmuteRestriction, TyCtxt};
-use middle::ty::{self, Ty, TypeFoldable};
+use ty::subst::{Subst, Substs, EnumeratedItems};
+use ty::{TransmuteRestriction, TyCtxt};
+use ty::{self, Ty, TypeFoldable};
 
 use std::fmt;
 
diff --git a/src/librustc/middle/lang_items.rs b/src/librustc/middle/lang_items.rs
index b08c2d6054c..bb0b8ed91df 100644
--- a/src/librustc/middle/lang_items.rs
+++ b/src/librustc/middle/lang_items.rs
@@ -26,7 +26,7 @@ use front::map as hir_map;
 use session::Session;
 use middle::cstore::CrateStore;
 use middle::def_id::DefId;
-use middle::ty;
+use ty;
 use middle::weak_lang_items;
 use util::nodemap::FnvHashMap;
 
diff --git a/src/librustc/middle/liveness.rs b/src/librustc/middle/liveness.rs
index ee39a4fc7df..f6eedb49e24 100644
--- a/src/librustc/middle/liveness.rs
+++ b/src/librustc/middle/liveness.rs
@@ -112,10 +112,10 @@ use self::VarKind::*;
 use dep_graph::DepNode;
 use middle::def::*;
 use middle::pat_util;
-use middle::ty::{self, TyCtxt, ParameterEnvironment};
-use middle::traits::{self, ProjectionMode};
-use middle::infer;
-use middle::ty::subst::Subst;
+use ty::{self, TyCtxt, ParameterEnvironment};
+use traits::{self, ProjectionMode};
+use infer;
+use ty::subst::Subst;
 use lint;
 use util::nodemap::NodeMap;
 
diff --git a/src/librustc/middle/mem_categorization.rs b/src/librustc/middle/mem_categorization.rs
index d2bc80a2cb2..6328f920cb7 100644
--- a/src/librustc/middle/mem_categorization.rs
+++ b/src/librustc/middle/mem_categorization.rs
@@ -73,11 +73,11 @@ use self::Aliasability::*;
 
 use middle::def_id::DefId;
 use front::map as ast_map;
-use middle::infer;
+use infer;
 use middle::const_qualif::ConstQualif;
 use middle::def::Def;
-use middle::ty::adjustment;
-use middle::ty::{self, Ty, TyCtxt};
+use ty::adjustment;
+use ty::{self, Ty, TyCtxt};
 
 use rustc_front::hir::{MutImmutable, MutMutable, PatKind};
 use rustc_front::hir;
diff --git a/src/librustc/middle/pat_util.rs b/src/librustc/middle/pat_util.rs
index 81166945115..b2b1344c4bb 100644
--- a/src/librustc/middle/pat_util.rs
+++ b/src/librustc/middle/pat_util.rs
@@ -10,7 +10,7 @@
 
 use middle::def::*;
 use middle::def_id::DefId;
-use middle::ty::TyCtxt;
+use ty::TyCtxt;
 use util::nodemap::FnvHashMap;
 
 use syntax::ast;
diff --git a/src/librustc/middle/reachable.rs b/src/librustc/middle/reachable.rs
index 601f069513d..2e01a7fc249 100644
--- a/src/librustc/middle/reachable.rs
+++ b/src/librustc/middle/reachable.rs
@@ -19,7 +19,7 @@ use dep_graph::DepNode;
 use front::map as ast_map;
 use middle::def::Def;
 use middle::def_id::DefId;
-use middle::ty::{self, TyCtxt};
+use ty::{self, TyCtxt};
 use middle::privacy;
 use session::config;
 use util::nodemap::NodeSet;
diff --git a/src/librustc/middle/region.rs b/src/librustc/middle/region.rs
index eb375205dee..1d1d05ea79f 100644
--- a/src/librustc/middle/region.rs
+++ b/src/librustc/middle/region.rs
@@ -21,7 +21,7 @@ use front::map as ast_map;
 use session::Session;
 use util::nodemap::{FnvHashMap, NodeMap, NodeSet};
 use middle::cstore::InlinedItem;
-use middle::ty;
+use ty;
 
 use std::cell::RefCell;
 use std::collections::hash_map::Entry;
@@ -280,7 +280,7 @@ pub struct RegionMaps {
     /// hierarchy based on their lexical mapping. This is used to
     /// handle the relationships between regions in a fn and in a
     /// closure defined by that fn. See the "Modeling closures"
-    /// section of the README in middle::infer::region_inference for
+    /// section of the README in infer::region_inference for
     /// more details.
     fn_tree: RefCell<NodeMap<ast::NodeId>>,
 }
@@ -291,7 +291,7 @@ pub struct Context {
     /// of the innermost fn body. Each fn forms its own disjoint tree
     /// in the region hierarchy. These fn bodies are themselves
     /// arranged into a tree. See the "Modeling closures" section of
-    /// the README in middle::infer::region_inference for more
+    /// the README in infer::region_inference for more
     /// details.
     root_id: Option<ast::NodeId>,
 
@@ -460,7 +460,7 @@ impl RegionMaps {
         self.scope_map.borrow()[id.0 as usize].into_option()
     }
 
-    #[allow(dead_code)] // used in middle::cfg
+    #[allow(dead_code)] // used in cfg
     pub fn encl_scope(&self, id: CodeExtent) -> CodeExtent {
         //! Returns the narrowest scope that encloses `id`, if any.
         self.opt_encl_scope(id).unwrap()
@@ -587,7 +587,7 @@ impl RegionMaps {
             // different functions.  Compare those fn for lexical
             // nesting. The reasoning behind this is subtle.  See the
             // "Modeling closures" section of the README in
-            // middle::infer::region_inference for more details.
+            // infer::region_inference for more details.
             let a_root_scope = self.code_extent_data(a_ancestors[a_index]);
             let b_root_scope = self.code_extent_data(a_ancestors[a_index]);
             return match (a_root_scope, b_root_scope) {
diff --git a/src/librustc/middle/resolve_lifetime.rs b/src/librustc/middle/resolve_lifetime.rs
index 8d3a80854b4..6342599bf73 100644
--- a/src/librustc/middle/resolve_lifetime.rs
+++ b/src/librustc/middle/resolve_lifetime.rs
@@ -23,8 +23,8 @@ use front::map::Map;
 use session::Session;
 use middle::def::{Def, DefMap};
 use middle::region;
-use middle::ty::subst;
-use middle::ty;
+use ty::subst;
+use ty;
 use std::fmt;
 use std::mem::replace;
 use syntax::ast;
diff --git a/src/librustc/middle/stability.rs b/src/librustc/middle/stability.rs
index 2d92742ed0f..3a2f995a318 100644
--- a/src/librustc/middle/stability.rs
+++ b/src/librustc/middle/stability.rs
@@ -20,7 +20,7 @@ use lint;
 use middle::cstore::{CrateStore, LOCAL_CRATE};
 use middle::def::Def;
 use middle::def_id::{CRATE_DEF_INDEX, DefId};
-use middle::ty::{self, TyCtxt};
+use ty::{self, TyCtxt};
 use middle::privacy::AccessLevels;
 use syntax::parse::token::InternedString;
 use syntax::codemap::{Span, DUMMY_SP};
diff --git a/src/librustc/mir/repr.rs b/src/librustc/mir/repr.rs
index 20cf6d929ca..b9073810783 100644
--- a/src/librustc/mir/repr.rs
+++ b/src/librustc/mir/repr.rs
@@ -12,8 +12,8 @@ use graphviz::IntoCow;
 use middle::const_eval::ConstVal;
 use rustc_const_eval::{ConstUsize, ConstInt};
 use middle::def_id::DefId;
-use middle::ty::subst::Substs;
-use middle::ty::{self, AdtDef, ClosureSubsts, FnOutput, Region, Ty};
+use ty::subst::Substs;
+use ty::{self, AdtDef, ClosureSubsts, FnOutput, Region, Ty};
 use util::ppaux;
 use rustc_back::slice;
 use rustc_front::hir::InlineAsm;
diff --git a/src/librustc/mir/tcx.rs b/src/librustc/mir/tcx.rs
index 0c9e00a6c5e..46d99dbef8c 100644
--- a/src/librustc/mir/tcx.rs
+++ b/src/librustc/mir/tcx.rs
@@ -14,9 +14,9 @@
  */
 
 use mir::repr::*;
-use middle::ty::subst::{Subst, Substs};
-use middle::ty::{self, AdtDef, Ty, TyCtxt};
-use middle::ty::fold::{TypeFoldable, TypeFolder, TypeVisitor};
+use ty::subst::{Subst, Substs};
+use ty::{self, AdtDef, Ty, TyCtxt};
+use ty::fold::{TypeFoldable, TypeFolder, TypeVisitor};
 use rustc_front::hir;
 
 #[derive(Copy, Clone, Debug)]
diff --git a/src/librustc/mir/transform.rs b/src/librustc/mir/transform.rs
index afcb5b95631..410e3f9d066 100644
--- a/src/librustc/mir/transform.rs
+++ b/src/librustc/mir/transform.rs
@@ -10,7 +10,7 @@
 
 use mir::mir_map::MirMap;
 use mir::repr::Mir;
-use middle::ty::TyCtxt;
+use ty::TyCtxt;
 use syntax::ast::NodeId;
 
 /// Various information about pass.
diff --git a/src/librustc/mir/visit.rs b/src/librustc/mir/visit.rs
index 8c180ecb233..856902bea3c 100644
--- a/src/librustc/mir/visit.rs
+++ b/src/librustc/mir/visit.rs
@@ -10,8 +10,8 @@
 
 use middle::const_eval::ConstVal;
 use middle::def_id::DefId;
-use middle::subst::Substs;
-use middle::ty::{ClosureSubsts, FnOutput, Region, Ty};
+use ty::subst::Substs;
+use ty::{ClosureSubsts, FnOutput, Region, Ty};
 use mir::repr::*;
 use rustc_const_eval::ConstUsize;
 use rustc_data_structures::tuple_slice::TupleSlice;
diff --git a/src/librustc/middle/traits/README.md b/src/librustc/traits/README.md
index ff72f9dd07e..ff72f9dd07e 100644
--- a/src/librustc/middle/traits/README.md
+++ b/src/librustc/traits/README.md
diff --git a/src/librustc/middle/traits/coherence.rs b/src/librustc/traits/coherence.rs
index 547cb71f234..b5b5da62080 100644
--- a/src/librustc/middle/traits/coherence.rs
+++ b/src/librustc/traits/coherence.rs
@@ -14,9 +14,9 @@ use super::{SelectionContext, Obligation, ObligationCause};
 
 use middle::cstore::LOCAL_CRATE;
 use middle::def_id::DefId;
-use middle::ty::subst::TypeSpace;
-use middle::ty::{self, Ty, TyCtxt};
-use middle::infer::{self, InferCtxt, TypeOrigin};
+use ty::subst::TypeSpace;
+use ty::{self, Ty, TyCtxt};
+use infer::{self, InferCtxt, TypeOrigin};
 use syntax::codemap::DUMMY_SP;
 
 #[derive(Copy, Clone)]
diff --git a/src/librustc/middle/traits/error_reporting.rs b/src/librustc/traits/error_reporting.rs
index dd051471a4d..c26aaeaf143 100644
--- a/src/librustc/middle/traits/error_reporting.rs
+++ b/src/librustc/traits/error_reporting.rs
@@ -25,9 +25,9 @@ use super::{
 
 use fmt_macros::{Parser, Piece, Position};
 use middle::def_id::DefId;
-use middle::infer::InferCtxt;
-use middle::ty::{self, ToPredicate, ToPolyTraitRef, TraitRef, Ty, TyCtxt, TypeFoldable};
-use middle::ty::fast_reject;
+use infer::InferCtxt;
+use ty::{self, ToPredicate, ToPolyTraitRef, TraitRef, Ty, TyCtxt, TypeFoldable};
+use ty::fast_reject;
 use util::nodemap::{FnvHashMap, FnvHashSet};
 
 use std::cmp;
diff --git a/src/librustc/middle/traits/fulfill.rs b/src/librustc/traits/fulfill.rs
index b2ba8a7a5f9..321144126c9 100644
--- a/src/librustc/middle/traits/fulfill.rs
+++ b/src/librustc/traits/fulfill.rs
@@ -9,8 +9,8 @@
 // except according to those terms.
 
 use dep_graph::DepGraph;
-use middle::infer::InferCtxt;
-use middle::ty::{self, Ty, TyCtxt, TypeFoldable, ToPolyTraitRef};
+use infer::InferCtxt;
+use ty::{self, Ty, TyCtxt, TypeFoldable, ToPolyTraitRef};
 use rustc_data_structures::obligation_forest::{Backtrace, ObligationForest, Error};
 use std::iter;
 use syntax::ast;
diff --git a/src/librustc/middle/traits/mod.rs b/src/librustc/traits/mod.rs
index 94047318599..867bd054fa9 100644
--- a/src/librustc/middle/traits/mod.rs
+++ b/src/librustc/traits/mod.rs
@@ -17,9 +17,9 @@ pub use self::ObligationCauseCode::*;
 
 use middle::def_id::DefId;
 use middle::free_region::FreeRegionMap;
-use middle::ty::subst;
-use middle::ty::{self, Ty, TypeFoldable};
-use middle::infer::{self, fixup_err_to_string, InferCtxt};
+use ty::subst;
+use ty::{self, Ty, TypeFoldable};
+use infer::{self, fixup_err_to_string, InferCtxt};
 
 use std::rc::Rc;
 use syntax::ast;
diff --git a/src/librustc/middle/traits/object_safety.rs b/src/librustc/traits/object_safety.rs
index 8777b9eb00c..7cd2ac5938d 100644
--- a/src/librustc/middle/traits/object_safety.rs
+++ b/src/librustc/traits/object_safety.rs
@@ -21,9 +21,9 @@ use super::supertraits;
 use super::elaborate_predicates;
 
 use middle::def_id::DefId;
-use middle::ty::subst::{self, SelfSpace, TypeSpace};
-use middle::traits;
-use middle::ty::{self, ToPolyTraitRef, Ty, TyCtxt, TypeFoldable};
+use ty::subst::{self, SelfSpace, TypeSpace};
+use traits;
+use ty::{self, ToPolyTraitRef, Ty, TyCtxt, TypeFoldable};
 use std::rc::Rc;
 use syntax::ast;
 
diff --git a/src/librustc/middle/traits/project.rs b/src/librustc/traits/project.rs
index bd075a5dc88..3adaf5fa6bb 100644
--- a/src/librustc/middle/traits/project.rs
+++ b/src/librustc/traits/project.rs
@@ -24,10 +24,10 @@ use super::VtableImplData;
 use super::util;
 
 use middle::def_id::DefId;
-use middle::infer::{self, TypeOrigin};
-use middle::ty::subst::Subst;
-use middle::ty::{self, ToPredicate, ToPolyTraitRef, Ty, TyCtxt};
-use middle::ty::fold::{TypeFoldable, TypeFolder};
+use infer::{self, TypeOrigin};
+use ty::subst::Subst;
+use ty::{self, ToPredicate, ToPolyTraitRef, Ty, TyCtxt};
+use ty::fold::{TypeFoldable, TypeFolder};
 use syntax::parse::token;
 use syntax::ast;
 use util::common::FN_OUTPUT_NAME;
diff --git a/src/librustc/middle/traits/select.rs b/src/librustc/traits/select.rs
index 050468809a5..e2a48688d4b 100644
--- a/src/librustc/middle/traits/select.rs
+++ b/src/librustc/traits/select.rs
@@ -37,13 +37,13 @@ use super::object_safety;
 use super::util;
 
 use middle::def_id::DefId;
-use middle::infer;
-use middle::infer::{InferCtxt, TypeFreshener, TypeOrigin};
-use middle::ty::subst::{Subst, Substs, TypeSpace};
-use middle::ty::{self, ToPredicate, ToPolyTraitRef, Ty, TyCtxt, TypeFoldable};
-use middle::traits;
-use middle::ty::fast_reject;
-use middle::ty::relate::TypeRelation;
+use infer;
+use infer::{InferCtxt, TypeFreshener, TypeOrigin};
+use ty::subst::{Subst, Substs, TypeSpace};
+use ty::{self, ToPredicate, ToPolyTraitRef, Ty, TyCtxt, TypeFoldable};
+use traits;
+use ty::fast_reject;
+use ty::relate::TypeRelation;
 
 use std::cell::RefCell;
 use std::fmt;
diff --git a/src/librustc/middle/traits/specialize/mod.rs b/src/librustc/traits/specialize/mod.rs
index 088099d87b1..e0ce54115eb 100644
--- a/src/librustc/middle/traits/specialize/mod.rs
+++ b/src/librustc/traits/specialize/mod.rs
@@ -22,11 +22,11 @@ use super::util::{fresh_type_vars_for_impl, impl_trait_ref_and_oblig};
 
 use middle::cstore::CrateStore;
 use middle::def_id::DefId;
-use middle::infer::{self, InferCtxt, TypeOrigin};
+use infer::{self, InferCtxt, TypeOrigin};
 use middle::region;
-use middle::ty::subst::{Subst, Substs};
-use middle::traits::{self, ProjectionMode, ObligationCause, Normalized};
-use middle::ty::{self, TyCtxt};
+use ty::subst::{Subst, Substs};
+use traits::{self, ProjectionMode, ObligationCause, Normalized};
+use ty::{self, TyCtxt};
 use syntax::codemap::DUMMY_SP;
 
 pub mod specialization_graph;
diff --git a/src/librustc/middle/traits/specialize/specialization_graph.rs b/src/librustc/traits/specialize/specialization_graph.rs
index f2170f75a11..eaafeb1a969 100644
--- a/src/librustc/middle/traits/specialize/specialization_graph.rs
+++ b/src/librustc/traits/specialize/specialization_graph.rs
@@ -15,9 +15,9 @@ use super::{Overlap, specializes};
 
 use middle::cstore::CrateStore;
 use middle::def_id::DefId;
-use middle::infer;
-use middle::traits::{self, ProjectionMode};
-use middle::ty::{self, TyCtxt, ImplOrTraitItem, TraitDef, TypeFoldable};
+use infer;
+use traits::{self, ProjectionMode};
+use ty::{self, TyCtxt, ImplOrTraitItem, TraitDef, TypeFoldable};
 use syntax::ast::Name;
 use util::nodemap::DefIdMap;
 
diff --git a/src/librustc/middle/traits/structural_impls.rs b/src/librustc/traits/structural_impls.rs
index 903b7c80baf..367e5f32ba3 100644
--- a/src/librustc/middle/traits/structural_impls.rs
+++ b/src/librustc/traits/structural_impls.rs
@@ -8,13 +8,13 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use middle::traits;
-use middle::traits::project::Normalized;
-use middle::ty::fold::{TypeFoldable, TypeFolder, TypeVisitor};
+use traits;
+use traits::project::Normalized;
+use ty::fold::{TypeFoldable, TypeFolder, TypeVisitor};
 
 use std::fmt;
 
-// structural impls for the structs in middle::traits
+// structural impls for the structs in traits
 
 impl<'tcx, T: fmt::Debug> fmt::Debug for Normalized<'tcx, T> {
     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
diff --git a/src/librustc/middle/traits/util.rs b/src/librustc/traits/util.rs
index f9a1b09a93d..f339b6e50ce 100644
--- a/src/librustc/middle/traits/util.rs
+++ b/src/librustc/traits/util.rs
@@ -9,9 +9,9 @@
 // except according to those terms.
 
 use middle::def_id::DefId;
-use middle::infer::InferCtxt;
-use middle::ty::subst::{Subst, Substs};
-use middle::ty::{self, Ty, TyCtxt, ToPredicate, ToPolyTraitRef};
+use infer::InferCtxt;
+use ty::subst::{Subst, Substs};
+use ty::{self, Ty, TyCtxt, ToPredicate, ToPolyTraitRef};
 use syntax::codemap::Span;
 use util::common::ErrorReported;
 use util::nodemap::FnvHashSet;
diff --git a/src/librustc/middle/ty/_match.rs b/src/librustc/ty/_match.rs
index fe54334da3d..d0ccc3e0fdd 100644
--- a/src/librustc/middle/ty/_match.rs
+++ b/src/librustc/ty/_match.rs
@@ -8,9 +8,9 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use middle::ty::{self, Ty, TyCtxt};
-use middle::ty::error::TypeError;
-use middle::ty::relate::{self, Relate, TypeRelation, RelateResult};
+use ty::{self, Ty, TyCtxt};
+use ty::error::TypeError;
+use ty::relate::{self, Relate, TypeRelation, RelateResult};
 
 /// A type "A" *matches* "B" if the fresh types in B could be
 /// substituted with values so as to make it equal to A. Matching is
diff --git a/src/librustc/middle/ty/adjustment.rs b/src/librustc/ty/adjustment.rs
index e4c293a74e8..dc2117b1ad1 100644
--- a/src/librustc/middle/ty/adjustment.rs
+++ b/src/librustc/ty/adjustment.rs
@@ -11,8 +11,8 @@
 pub use self::AutoAdjustment::*;
 pub use self::AutoRef::*;
 
-use middle::ty::{self, Ty, TyCtxt, TypeAndMut, TypeFoldable};
-use middle::ty::LvaluePreference::{NoPreference};
+use ty::{self, Ty, TyCtxt, TypeAndMut, TypeFoldable};
+use ty::LvaluePreference::{NoPreference};
 
 use syntax::ast;
 use syntax::codemap::Span;
diff --git a/src/librustc/middle/ty/cast.rs b/src/librustc/ty/cast.rs
index b25d6e0476d..c8d282d18af 100644
--- a/src/librustc/middle/ty/cast.rs
+++ b/src/librustc/ty/cast.rs
@@ -11,7 +11,7 @@
 // Helpers for handling cast expressions, used in both
 // typeck and trans.
 
-use middle::ty::{self, Ty};
+use ty::{self, Ty};
 
 use syntax::ast;
 
diff --git a/src/librustc/middle/ty/contents.rs b/src/librustc/ty/contents.rs
index 47a15a14b41..cb84b198222 100644
--- a/src/librustc/middle/ty/contents.rs
+++ b/src/librustc/ty/contents.rs
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 use middle::def_id::{DefId};
-use middle::ty::{self, Ty, TyCtxt};
+use ty::{self, Ty, TyCtxt};
 use util::common::MemoizationMap;
 use util::nodemap::FnvHashMap;
 
diff --git a/src/librustc/middle/ty/context.rs b/src/librustc/ty/context.rs
index 74714f71481..49e9eda5651 100644
--- a/src/librustc/middle/ty/context.rs
+++ b/src/librustc/ty/context.rs
@@ -22,16 +22,16 @@ use middle::free_region::FreeRegionMap;
 use middle::region::RegionMaps;
 use middle::resolve_lifetime;
 use middle::stability;
-use middle::ty::subst::{self, Subst, Substs};
-use middle::traits;
-use middle::ty::{self, TraitRef, Ty, TypeAndMut};
-use middle::ty::{TyS, TypeVariants};
-use middle::ty::{AdtDef, ClosureSubsts, ExistentialBounds, Region};
-use middle::ty::{FreevarMap};
-use middle::ty::{BareFnTy, InferTy, ParamTy, ProjectionTy, TraitTy};
-use middle::ty::{TyVar, TyVid, IntVar, IntVid, FloatVar, FloatVid};
-use middle::ty::TypeVariants::*;
-use middle::ty::maps;
+use ty::subst::{self, Subst, Substs};
+use traits;
+use ty::{self, TraitRef, Ty, TypeAndMut};
+use ty::{TyS, TypeVariants};
+use ty::{AdtDef, ClosureSubsts, ExistentialBounds, Region};
+use ty::{FreevarMap};
+use ty::{BareFnTy, InferTy, ParamTy, ProjectionTy, TraitTy};
+use ty::{TyVar, TyVid, IntVar, IntVid, FloatVar, FloatVid};
+use ty::TypeVariants::*;
+use ty::maps;
 use util::common::MemoizationMap;
 use util::nodemap::{NodeMap, NodeSet, DefIdMap, DefIdSet};
 use util::nodemap::FnvHashMap;
@@ -639,7 +639,7 @@ impl<'a, 'tcx> Lift<'tcx> for &'a Substs<'a> {
 
 
 pub mod tls {
-    use middle::ty::TyCtxt;
+    use ty::TyCtxt;
 
     use std::cell::Cell;
     use std::fmt;
@@ -699,7 +699,7 @@ macro_rules! sty_debug_print {
         // variable names.
         #[allow(non_snake_case)]
         mod inner {
-            use middle::ty::{self, TyCtxt};
+            use ty::{self, TyCtxt};
             #[derive(Copy, Clone)]
             struct DebugStat {
                 total: usize,
diff --git a/src/librustc/middle/ty/error.rs b/src/librustc/ty/error.rs
index 8e1ace57e42..9ab48505828 100644
--- a/src/librustc/middle/ty/error.rs
+++ b/src/librustc/ty/error.rs
@@ -9,9 +9,9 @@
 // except according to those terms.
 
 use middle::def_id::DefId;
-use middle::ty::subst;
-use middle::infer::type_variable;
-use middle::ty::{self, BoundRegion, Region, Ty, TyCtxt};
+use ty::subst;
+use infer::type_variable;
+use ty::{self, BoundRegion, Region, Ty, TyCtxt};
 
 use std::fmt;
 use syntax::abi;
diff --git a/src/librustc/middle/ty/fast_reject.rs b/src/librustc/ty/fast_reject.rs
index fc4db22a8a6..0865e059f59 100644
--- a/src/librustc/middle/ty/fast_reject.rs
+++ b/src/librustc/ty/fast_reject.rs
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 use middle::def_id::DefId;
-use middle::ty::{self, Ty, TyCtxt};
+use ty::{self, Ty, TyCtxt};
 use syntax::ast;
 
 use self::SimplifiedType::*;
diff --git a/src/librustc/middle/ty/flags.rs b/src/librustc/ty/flags.rs
index 12b24261507..f3dcccedc59 100644
--- a/src/librustc/middle/ty/flags.rs
+++ b/src/librustc/ty/flags.rs
@@ -8,8 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use middle::ty::subst;
-use middle::ty::{self, Ty, TypeFlags, TypeFoldable};
+use ty::subst;
+use ty::{self, Ty, TypeFlags, TypeFoldable};
 
 pub struct FlagComputation {
     pub flags: TypeFlags,
diff --git a/src/librustc/middle/ty/fold.rs b/src/librustc/ty/fold.rs
index 2e8782a72f6..d04f272688c 100644
--- a/src/librustc/middle/ty/fold.rs
+++ b/src/librustc/ty/fold.rs
@@ -40,9 +40,9 @@
 //! and does not need to visit anything else.
 
 use middle::region;
-use middle::ty::subst;
-use middle::ty::adjustment;
-use middle::ty::{self, Binder, Ty, TyCtxt, TypeFlags};
+use ty::subst;
+use ty::adjustment;
+use ty::{self, Binder, Ty, TyCtxt, TypeFlags};
 
 use std::fmt;
 use util::nodemap::{FnvHashMap, FnvHashSet};
diff --git a/src/librustc/middle/ty/item_path.rs b/src/librustc/ty/item_path.rs
index 147230f5bdc..a106fd6e5aa 100644
--- a/src/librustc/middle/ty/item_path.rs
+++ b/src/librustc/ty/item_path.rs
@@ -11,7 +11,7 @@
 use front::map::DefPathData;
 use middle::cstore::LOCAL_CRATE;
 use middle::def_id::DefId;
-use middle::ty::{self, Ty, TyCtxt};
+use ty::{self, Ty, TyCtxt};
 use syntax::ast;
 
 impl<'tcx> TyCtxt<'tcx> {
diff --git a/src/librustc/middle/ty/ivar.rs b/src/librustc/ty/ivar.rs
index ffc12aa5aea..b0f443fc19b 100644
--- a/src/librustc/middle/ty/ivar.rs
+++ b/src/librustc/ty/ivar.rs
@@ -9,8 +9,8 @@
 // except according to those terms.
 
 use dep_graph::DepNode;
-use middle::ty::{Ty, TyS};
-use middle::ty::tls;
+use ty::{Ty, TyS};
+use ty::tls;
 
 use rustc_data_structures::ivar;
 
diff --git a/src/librustc/middle/ty/maps.rs b/src/librustc/ty/maps.rs
index 8d8afc199f5..77b6b03e48f 100644
--- a/src/librustc/middle/ty/maps.rs
+++ b/src/librustc/ty/maps.rs
@@ -10,7 +10,7 @@
 
 use dep_graph::{DepNode, DepTrackingMapConfig};
 use middle::def_id::DefId;
-use middle::ty;
+use ty;
 use std::marker::PhantomData;
 use std::rc::Rc;
 use syntax::{attr, ast};
diff --git a/src/librustc/middle/ty/mod.rs b/src/librustc/ty/mod.rs
index 0eee78dcab3..96a0627c6a4 100644
--- a/src/librustc/middle/ty/mod.rs
+++ b/src/librustc/ty/mod.rs
@@ -27,11 +27,11 @@ use middle::def::{self, Def, ExportMap};
 use middle::def_id::DefId;
 use middle::lang_items::{FnTraitLangItem, FnMutTraitLangItem, FnOnceTraitLangItem};
 use middle::region::{CodeExtent};
-use middle::traits;
-use middle::ty;
-use middle::ty::fold::TypeFolder;
-use middle::ty::subst::{Subst, Substs, VecPerParamSpace};
-use middle::ty::walk::TypeWalker;
+use traits;
+use ty;
+use ty::fold::TypeFolder;
+use ty::subst::{Subst, Substs, VecPerParamSpace};
+use ty::walk::TypeWalker;
 use util::common::MemoizationMap;
 use util::nodemap::{NodeMap, NodeSet};
 use util::nodemap::FnvHashMap;
diff --git a/src/librustc/middle/ty/outlives.rs b/src/librustc/ty/outlives.rs
index 9439180a6cd..898c9d65c78 100644
--- a/src/librustc/middle/ty/outlives.rs
+++ b/src/librustc/ty/outlives.rs
@@ -12,8 +12,8 @@
 // refers to rules defined in RFC 1214 (`OutlivesFooBar`), so see that
 // RFC for reference.
 
-use middle::infer::InferCtxt;
-use middle::ty::{self, Ty, TypeFoldable};
+use infer::InferCtxt;
+use ty::{self, Ty, TypeFoldable};
 
 #[derive(Debug)]
 pub enum Component<'tcx> {
diff --git a/src/librustc/middle/ty/relate.rs b/src/librustc/ty/relate.rs
index d648c2c5884..bb4f13b13c1 100644
--- a/src/librustc/middle/ty/relate.rs
+++ b/src/librustc/ty/relate.rs
@@ -14,9 +14,9 @@
 //! type equality, etc.
 
 use middle::def_id::DefId;
-use middle::ty::subst::{ParamSpace, Substs};
-use middle::ty::{self, Ty, TyCtxt, TypeFoldable};
-use middle::ty::error::{ExpectedFound, TypeError};
+use ty::subst::{ParamSpace, Substs};
+use ty::{self, Ty, TyCtxt, TypeFoldable};
+use ty::error::{ExpectedFound, TypeError};
 use std::rc::Rc;
 use syntax::abi;
 use rustc_front::hir as ast;
diff --git a/src/librustc/middle/ty/structural_impls.rs b/src/librustc/ty/structural_impls.rs
index 23ec75b18e8..6fca1eef701 100644
--- a/src/librustc/middle/ty/structural_impls.rs
+++ b/src/librustc/ty/structural_impls.rs
@@ -8,10 +8,10 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use middle::ty::subst::{self, VecPerParamSpace};
-use middle::traits;
-use middle::ty::{self, Lift, TraitRef, Ty, TyCtxt};
-use middle::ty::fold::{TypeFoldable, TypeFolder, TypeVisitor};
+use ty::subst::{self, VecPerParamSpace};
+use traits;
+use ty::{self, Lift, TraitRef, Ty, TyCtxt};
+use ty::fold::{TypeFoldable, TypeFolder, TypeVisitor};
 
 use std::rc::Rc;
 use syntax::abi;
diff --git a/src/librustc/middle/ty/sty.rs b/src/librustc/ty/sty.rs
index d8f0dd29031..dae12824da2 100644
--- a/src/librustc/middle/ty/sty.rs
+++ b/src/librustc/ty/sty.rs
@@ -13,9 +13,9 @@
 use middle::cstore;
 use middle::def_id::DefId;
 use middle::region;
-use middle::ty::subst::{self, Substs};
-use middle::traits;
-use middle::ty::{self, AdtDef, ToPredicate, TypeFlags, Ty, TyCtxt, TyS, TypeFoldable};
+use ty::subst::{self, Substs};
+use traits;
+use ty::{self, AdtDef, ToPredicate, TypeFlags, Ty, TyCtxt, TyS, TypeFoldable};
 use util::common::ErrorReported;
 
 use collections::enum_set::{self, EnumSet, CLike};
@@ -732,7 +732,7 @@ pub enum InferTy {
 
     /// A `FreshTy` is one that is generated as a replacement for an
     /// unbound type variable. This is convenient for caching etc. See
-    /// `middle::infer::freshen` for more details.
+    /// `infer::freshen` for more details.
     FreshTy(u32),
     FreshIntTy(u32),
     FreshFloatTy(u32)
diff --git a/src/librustc/middle/ty/subst.rs b/src/librustc/ty/subst.rs
index b9bf550704e..8d257282121 100644
--- a/src/librustc/middle/ty/subst.rs
+++ b/src/librustc/ty/subst.rs
@@ -14,8 +14,8 @@ pub use self::ParamSpace::*;
 
 use middle::cstore;
 use middle::def_id::DefId;
-use middle::ty::{self, Ty, TyCtxt};
-use middle::ty::fold::{TypeFoldable, TypeFolder};
+use ty::{self, Ty, TyCtxt};
+use ty::fold::{TypeFoldable, TypeFolder};
 
 use serialize::{Encodable, Encoder, Decodable, Decoder};
 use std::fmt;
diff --git a/src/librustc/middle/ty/trait_def.rs b/src/librustc/ty/trait_def.rs
index 3d7b3bf2634..3ebf2ba4c84 100644
--- a/src/librustc/middle/ty/trait_def.rs
+++ b/src/librustc/ty/trait_def.rs
@@ -10,10 +10,10 @@
 
 use dep_graph::DepNode;
 use middle::def_id::DefId;
-use middle::traits::{self, specialization_graph};
-use middle::ty;
-use middle::ty::fast_reject;
-use middle::ty::{Ty, TyCtxt, TraitRef};
+use traits::{self, specialization_graph};
+use ty;
+use ty::fast_reject;
+use ty::{Ty, TyCtxt, TraitRef};
 use std::borrow::{Borrow};
 use std::cell::{Cell, Ref, RefCell};
 use syntax::ast::Name;
diff --git a/src/librustc/middle/ty/util.rs b/src/librustc/ty/util.rs
index f6c4390b83c..b870dc47ec7 100644
--- a/src/librustc/middle/ty/util.rs
+++ b/src/librustc/ty/util.rs
@@ -14,13 +14,13 @@ use back::svh::Svh;
 use middle::const_eval::{self, ConstVal, ErrKind};
 use middle::const_eval::EvalHint::UncheckedExprHint;
 use middle::def_id::DefId;
-use middle::ty::subst;
-use middle::infer;
+use ty::subst;
+use infer;
 use middle::pat_util;
-use middle::traits::{self, ProjectionMode};
-use middle::ty::{self, Ty, TyCtxt, TypeAndMut, TypeFlags, TypeFoldable};
-use middle::ty::{Disr, ParameterEnvironment};
-use middle::ty::TypeVariants::*;
+use traits::{self, ProjectionMode};
+use ty::{self, Ty, TyCtxt, TypeAndMut, TypeFlags, TypeFoldable};
+use ty::{Disr, ParameterEnvironment};
+use ty::TypeVariants::*;
 
 use rustc_const_eval::{ConstInt, ConstIsize, ConstUsize};
 
diff --git a/src/librustc/middle/ty/walk.rs b/src/librustc/ty/walk.rs
index b6d93ecf78b..fa7c9b78231 100644
--- a/src/librustc/middle/ty/walk.rs
+++ b/src/librustc/ty/walk.rs
@@ -11,7 +11,7 @@
 //! An iterator over the type substructure.
 //! WARNING: this does not keep track of the region depth.
 
-use middle::ty::{self, Ty};
+use ty::{self, Ty};
 use std::iter::Iterator;
 use std::vec::IntoIter;
 
diff --git a/src/librustc/middle/ty/wf.rs b/src/librustc/ty/wf.rs
index 1becdb14fa5..e6c4e90babb 100644
--- a/src/librustc/middle/ty/wf.rs
+++ b/src/librustc/ty/wf.rs
@@ -9,11 +9,11 @@
 // except according to those terms.
 
 use middle::def_id::DefId;
-use middle::infer::InferCtxt;
-use middle::ty::outlives::{self, Component};
-use middle::ty::subst::Substs;
-use middle::traits;
-use middle::ty::{self, ToPredicate, Ty, TyCtxt, TypeFoldable};
+use infer::InferCtxt;
+use ty::outlives::{self, Component};
+use ty::subst::Substs;
+use traits;
+use ty::{self, ToPredicate, Ty, TyCtxt, TypeFoldable};
 use std::iter::once;
 use syntax::ast;
 use syntax::codemap::Span;
diff --git a/src/librustc/util/ppaux.rs b/src/librustc/util/ppaux.rs
index f67346fe1f9..20f16a1d255 100644
--- a/src/librustc/util/ppaux.rs
+++ b/src/librustc/util/ppaux.rs
@@ -10,14 +10,14 @@
 
 
 use middle::def_id::DefId;
-use middle::ty::subst::{self, Subst};
-use middle::ty::{BrAnon, BrEnv, BrFresh, BrNamed};
-use middle::ty::{TyBool, TyChar, TyStruct, TyEnum};
-use middle::ty::{TyError, TyStr, TyArray, TySlice, TyFloat, TyFnDef, TyFnPtr};
-use middle::ty::{TyParam, TyRawPtr, TyRef, TyTuple};
-use middle::ty::TyClosure;
-use middle::ty::{TyBox, TyTrait, TyInt, TyUint, TyInfer};
-use middle::ty::{self, Ty, TyCtxt, TypeFoldable};
+use ty::subst::{self, Subst};
+use ty::{BrAnon, BrEnv, BrFresh, BrNamed};
+use ty::{TyBool, TyChar, TyStruct, TyEnum};
+use ty::{TyError, TyStr, TyArray, TySlice, TyFloat, TyFnDef, TyFnPtr};
+use ty::{TyParam, TyRawPtr, TyRef, TyTuple};
+use ty::TyClosure;
+use ty::{TyBox, TyTrait, TyInt, TyUint, TyInfer};
+use ty::{self, Ty, TyCtxt, TypeFoldable};
 
 use std::fmt;
 use syntax::abi::Abi;
diff --git a/src/librustc_borrowck/borrowck/check_loans.rs b/src/librustc_borrowck/borrowck/check_loans.rs
index 9186765e6d0..aa2b7ed2cde 100644
--- a/src/librustc_borrowck/borrowck/check_loans.rs
+++ b/src/librustc_borrowck/borrowck/check_loans.rs
@@ -22,12 +22,12 @@ use borrowck::*;
 use borrowck::InteriorKind::{InteriorElement, InteriorField};
 use rustc::middle::expr_use_visitor as euv;
 use rustc::middle::expr_use_visitor::MutateMode;
-use rustc::middle::infer;
+use rustc::infer;
 use rustc::middle::mem_categorization as mc;
 use rustc::middle::mem_categorization::Categorization;
 use rustc::middle::region;
-use rustc::middle::ty::{self, TyCtxt};
-use rustc::middle::traits::ProjectionMode;
+use rustc::ty::{self, TyCtxt};
+use rustc::traits::ProjectionMode;
 use syntax::ast;
 use syntax::codemap::Span;
 use rustc_front::hir;
diff --git a/src/librustc_borrowck/borrowck/fragments.rs b/src/librustc_borrowck/borrowck/fragments.rs
index 3d6e9c8868c..2d38b665cf9 100644
--- a/src/librustc_borrowck/borrowck/fragments.rs
+++ b/src/librustc_borrowck/borrowck/fragments.rs
@@ -21,7 +21,7 @@ use borrowck::LoanPathElem::{LpDeref, LpInterior};
 use borrowck::move_data::InvalidMovePathIndex;
 use borrowck::move_data::{MoveData, MovePathIndex};
 use rustc::middle::def_id::{DefId};
-use rustc::middle::ty::{self, TyCtxt};
+use rustc::ty::{self, TyCtxt};
 use rustc::middle::mem_categorization as mc;
 
 use std::mem;
diff --git a/src/librustc_borrowck/borrowck/gather_loans/gather_moves.rs b/src/librustc_borrowck/borrowck/gather_loans/gather_moves.rs
index 4e507284a1b..107109c9115 100644
--- a/src/librustc_borrowck/borrowck/gather_loans/gather_moves.rs
+++ b/src/librustc_borrowck/borrowck/gather_loans/gather_moves.rs
@@ -18,7 +18,7 @@ use rustc::middle::expr_use_visitor as euv;
 use rustc::middle::mem_categorization as mc;
 use rustc::middle::mem_categorization::Categorization;
 use rustc::middle::mem_categorization::InteriorOffsetKind as Kind;
-use rustc::middle::ty;
+use rustc::ty;
 
 use std::rc::Rc;
 use syntax::ast;
diff --git a/src/librustc_borrowck/borrowck/gather_loans/lifetime.rs b/src/librustc_borrowck/borrowck/gather_loans/lifetime.rs
index 84dce6d3570..c2492bba624 100644
--- a/src/librustc_borrowck/borrowck/gather_loans/lifetime.rs
+++ b/src/librustc_borrowck/borrowck/gather_loans/lifetime.rs
@@ -16,7 +16,7 @@ use rustc::middle::expr_use_visitor as euv;
 use rustc::middle::mem_categorization as mc;
 use rustc::middle::mem_categorization::Categorization;
 use rustc::middle::region;
-use rustc::middle::ty;
+use rustc::ty;
 
 use syntax::ast;
 use syntax::codemap::Span;
diff --git a/src/librustc_borrowck/borrowck/gather_loans/mod.rs b/src/librustc_borrowck/borrowck/gather_loans/mod.rs
index 2d255c05454..247f8121de7 100644
--- a/src/librustc_borrowck/borrowck/gather_loans/mod.rs
+++ b/src/librustc_borrowck/borrowck/gather_loans/mod.rs
@@ -19,12 +19,12 @@
 use borrowck::*;
 use borrowck::move_data::MoveData;
 use rustc::middle::expr_use_visitor as euv;
-use rustc::middle::infer;
+use rustc::infer;
 use rustc::middle::mem_categorization as mc;
 use rustc::middle::mem_categorization::Categorization;
 use rustc::middle::region;
-use rustc::middle::ty::{self, TyCtxt};
-use rustc::middle::traits::ProjectionMode;
+use rustc::ty::{self, TyCtxt};
+use rustc::traits::ProjectionMode;
 
 use syntax::ast;
 use syntax::codemap::Span;
diff --git a/src/librustc_borrowck/borrowck/gather_loans/move_error.rs b/src/librustc_borrowck/borrowck/gather_loans/move_error.rs
index 4cb9673785e..f49554289b3 100644
--- a/src/librustc_borrowck/borrowck/gather_loans/move_error.rs
+++ b/src/librustc_borrowck/borrowck/gather_loans/move_error.rs
@@ -12,7 +12,7 @@ use borrowck::BorrowckCtxt;
 use rustc::middle::mem_categorization as mc;
 use rustc::middle::mem_categorization::Categorization;
 use rustc::middle::mem_categorization::InteriorOffsetKind as Kind;
-use rustc::middle::ty;
+use rustc::ty;
 use syntax::ast;
 use syntax::codemap;
 use syntax::errors::DiagnosticBuilder;
diff --git a/src/librustc_borrowck/borrowck/gather_loans/restrictions.rs b/src/librustc_borrowck/borrowck/gather_loans/restrictions.rs
index 2a0d8ef2766..ee8c3aff2ec 100644
--- a/src/librustc_borrowck/borrowck/gather_loans/restrictions.rs
+++ b/src/librustc_borrowck/borrowck/gather_loans/restrictions.rs
@@ -14,7 +14,7 @@ use borrowck::*;
 use rustc::middle::expr_use_visitor as euv;
 use rustc::middle::mem_categorization as mc;
 use rustc::middle::mem_categorization::Categorization;
-use rustc::middle::ty;
+use rustc::ty;
 use syntax::codemap::Span;
 
 use borrowck::ToInteriorKind;
diff --git a/src/librustc_borrowck/borrowck/mir/dataflow.rs b/src/librustc_borrowck/borrowck/mir/dataflow.rs
index 3c3a60b995f..a8176c060a1 100644
--- a/src/librustc_borrowck/borrowck/mir/dataflow.rs
+++ b/src/librustc_borrowck/borrowck/mir/dataflow.rs
@@ -10,7 +10,7 @@
 
 use syntax::attr::AttrMetaMethods;
 
-use rustc::middle::ty;
+use rustc::ty::TyCtxt;
 use rustc::mir::repr::{self, Mir};
 
 use std::io;
@@ -459,7 +459,7 @@ impl<D: BitDenotation> DataflowState<D> {
 
 
 impl<'tcx> DataflowState<MoveData<'tcx>> {
-    pub fn new_move_analysis(mir: &Mir<'tcx>, tcx: &ty::TyCtxt<'tcx>) -> Self {
+    pub fn new_move_analysis(mir: &Mir<'tcx>, tcx: &TyCtxt<'tcx>) -> Self {
         let move_data = MoveData::gather_moves(mir, tcx);
         DataflowState::new(mir, move_data)
     }
diff --git a/src/librustc_borrowck/borrowck/mir/gather_moves.rs b/src/librustc_borrowck/borrowck/mir/gather_moves.rs
index 46eb3d3ca03..dbe58799341 100644
--- a/src/librustc_borrowck/borrowck/mir/gather_moves.rs
+++ b/src/librustc_borrowck/borrowck/mir/gather_moves.rs
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 
-use rustc::middle::ty::TyCtxt;
+use rustc::ty::TyCtxt;
 use rustc::mir::repr::*;
 use rustc::util::nodemap::FnvHashMap;
 
diff --git a/src/librustc_borrowck/borrowck/mod.rs b/src/librustc_borrowck/borrowck/mod.rs
index bb2fe7acb95..d985359a3dd 100644
--- a/src/librustc_borrowck/borrowck/mod.rs
+++ b/src/librustc_borrowck/borrowck/mod.rs
@@ -23,7 +23,7 @@ use self::InteriorKind::*;
 use rustc::dep_graph::DepNode;
 use rustc::front::map as hir_map;
 use rustc::front::map::blocks::FnParts;
-use rustc::middle::cfg;
+use rustc::cfg;
 use rustc::middle::dataflow::DataFlowContext;
 use rustc::middle::dataflow::BitwiseOperator;
 use rustc::middle::dataflow::DataFlowOperator;
@@ -34,7 +34,7 @@ use rustc::middle::free_region::FreeRegionMap;
 use rustc::middle::mem_categorization as mc;
 use rustc::middle::mem_categorization::Categorization;
 use rustc::middle::region;
-use rustc::middle::ty::{self, Ty, TyCtxt};
+use rustc::ty::{self, Ty, TyCtxt};
 
 use std::fmt;
 use std::mem;
diff --git a/src/librustc_borrowck/borrowck/move_data.rs b/src/librustc_borrowck/borrowck/move_data.rs
index 4c645d4bb69..00274fe1a04 100644
--- a/src/librustc_borrowck/borrowck/move_data.rs
+++ b/src/librustc_borrowck/borrowck/move_data.rs
@@ -14,14 +14,14 @@
 pub use self::MoveKind::*;
 
 use borrowck::*;
-use rustc::middle::cfg;
+use rustc::cfg;
 use rustc::middle::dataflow::DataFlowContext;
 use rustc::middle::dataflow::BitwiseOperator;
 use rustc::middle::dataflow::DataFlowOperator;
 use rustc::middle::dataflow::KillFrom;
 use rustc::middle::expr_use_visitor as euv;
 use rustc::middle::expr_use_visitor::MutateMode;
-use rustc::middle::ty::TyCtxt;
+use rustc::ty::TyCtxt;
 use rustc::util::nodemap::{FnvHashMap, NodeSet};
 
 use std::cell::RefCell;
diff --git a/src/librustc_borrowck/graphviz.rs b/src/librustc_borrowck/graphviz.rs
index fd23772bcda..0da9525efd8 100644
--- a/src/librustc_borrowck/graphviz.rs
+++ b/src/librustc_borrowck/graphviz.rs
@@ -14,13 +14,13 @@
 
 pub use self::Variant::*;
 
-pub use rustc::middle::cfg::graphviz::{Node, Edge};
-use rustc::middle::cfg::graphviz as cfg_dot;
+pub use rustc::cfg::graphviz::{Node, Edge};
+use rustc::cfg::graphviz as cfg_dot;
 
 use borrowck;
 use borrowck::{BorrowckCtxt, LoanPath};
 use dot;
-use rustc::middle::cfg::CFGIndex;
+use rustc::cfg::CFGIndex;
 use rustc::middle::dataflow::{DataFlowOperator, DataFlowContext, EntryOrExit};
 use std::rc::Rc;
 use dot::IntoCow;
diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs
index 96e819ea91f..11ee2a4fbc3 100644
--- a/src/librustc_driver/driver.rs
+++ b/src/librustc_driver/driver.rs
@@ -17,9 +17,9 @@ use rustc::session::{Session, CompileResult, compile_result_from_err_count};
 use rustc::session::config::{self, Input, OutputFilenames, OutputType};
 use rustc::session::search_paths::PathKind;
 use rustc::lint;
-use rustc::middle::{self, dependency_format, stability, ty, reachable};
+use rustc::middle::{self, dependency_format, stability, reachable};
 use rustc::middle::privacy::AccessLevels;
-use rustc::middle::ty::TyCtxt;
+use rustc::ty::{self, TyCtxt};
 use rustc::util::common::time;
 use rustc::util::nodemap::NodeSet;
 use rustc_back::sha2::{Sha256, Digest};
diff --git a/src/librustc_driver/pretty.rs b/src/librustc_driver/pretty.rs
index 726dd02dd25..31345cfdc41 100644
--- a/src/librustc_driver/pretty.rs
+++ b/src/librustc_driver/pretty.rs
@@ -20,9 +20,9 @@ use rustc_trans::back::link;
 use {driver, abort_on_err};
 
 use rustc::dep_graph::DepGraph;
-use rustc::middle::ty::{self, TyCtxt};
-use rustc::middle::cfg;
-use rustc::middle::cfg::graphviz::LabelledCFG;
+use rustc::ty::{self, TyCtxt};
+use rustc::cfg;
+use rustc::cfg::graphviz::LabelledCFG;
 use rustc::session::Session;
 use rustc::session::config::Input;
 use rustc_borrowck as borrowck;
diff --git a/src/librustc_driver/test.rs b/src/librustc_driver/test.rs
index 6bca4ff481d..8620d5e1fd0 100644
--- a/src/librustc_driver/test.rs
+++ b/src/librustc_driver/test.rs
@@ -14,21 +14,21 @@ use driver;
 use rustc::dep_graph::DepGraph;
 use rustc_lint;
 use rustc_resolve as resolve;
-use rustc_typeck::middle::lang_items;
-use rustc_typeck::middle::free_region::FreeRegionMap;
-use rustc_typeck::middle::region::{self, CodeExtent};
-use rustc_typeck::middle::region::CodeExtentData;
-use rustc_typeck::middle::resolve_lifetime;
-use rustc_typeck::middle::stability;
-use rustc_typeck::middle::ty::subst;
-use rustc_typeck::middle::ty::subst::Subst;
-use rustc_typeck::middle::traits::ProjectionMode;
-use rustc_typeck::middle::ty::{self, Ty, TyCtxt, TypeFoldable};
-use rustc_typeck::middle::ty::relate::TypeRelation;
-use rustc_typeck::middle::infer::{self, TypeOrigin};
-use rustc_typeck::middle::infer::lub::Lub;
-use rustc_typeck::middle::infer::glb::Glb;
-use rustc_typeck::middle::infer::sub::Sub;
+use rustc::middle::lang_items;
+use rustc::middle::free_region::FreeRegionMap;
+use rustc::middle::region::{self, CodeExtent};
+use rustc::middle::region::CodeExtentData;
+use rustc::middle::resolve_lifetime;
+use rustc::middle::stability;
+use rustc::ty::subst;
+use rustc::ty::subst::Subst;
+use rustc::traits::ProjectionMode;
+use rustc::ty::{self, Ty, TyCtxt, TypeFoldable};
+use rustc::ty::relate::TypeRelation;
+use rustc::infer::{self, TypeOrigin};
+use rustc::infer::lub::Lub;
+use rustc::infer::glb::Glb;
+use rustc::infer::sub::Sub;
 use rustc_metadata::cstore::CStore;
 use rustc::front::map as hir_map;
 use rustc::session::{self, config};
diff --git a/src/librustc_lint/bad_style.rs b/src/librustc_lint/bad_style.rs
index e399270197e..66d435a7581 100644
--- a/src/librustc_lint/bad_style.rs
+++ b/src/librustc_lint/bad_style.rs
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 use middle::def::Def;
-use middle::ty;
+use rustc::ty;
 use lint::{LateContext, LintContext, LintArray};
 use lint::{LintPass, LateLintPass};
 
diff --git a/src/librustc_lint/builtin.rs b/src/librustc_lint/builtin.rs
index 66e19cf29bf..339c969b01f 100644
--- a/src/librustc_lint/builtin.rs
+++ b/src/librustc_lint/builtin.rs
@@ -28,14 +28,15 @@
 //! Use the former for unit-like structs and the latter for structs with
 //! a `pub fn new()`.
 
-use middle::{cfg, infer, stability, traits};
 use middle::def::Def;
 use middle::cstore::CrateStore;
 use middle::def_id::DefId;
-use middle::ty::subst::Substs;
-use middle::ty::{self, Ty, TyCtxt};
-use middle::ty::adjustment;
-use middle::traits::ProjectionMode;
+use middle::stability;
+use rustc::{cfg, infer};
+use rustc::ty::subst::Substs;
+use rustc::ty::{self, Ty, TyCtxt};
+use rustc::ty::adjustment;
+use rustc::traits::{self, ProjectionMode};
 use rustc::front::map as hir_map;
 use util::nodemap::{NodeSet};
 use lint::{Level, LateContext, LintContext, LintArray, Lint};
diff --git a/src/librustc_lint/types.rs b/src/librustc_lint/types.rs
index 3dfd265c5a0..6322f592573 100644
--- a/src/librustc_lint/types.rs
+++ b/src/librustc_lint/types.rs
@@ -10,10 +10,10 @@
 
 #![allow(non_snake_case)]
 
-use middle::{infer};
 use middle::def_id::DefId;
-use middle::ty::subst::Substs;
-use middle::ty::{self, Ty, TyCtxt};
+use rustc::infer;
+use rustc::ty::subst::Substs;
+use rustc::ty::{self, Ty, TyCtxt};
 use middle::const_eval::{eval_const_expr_partial, ConstVal};
 use middle::const_eval::EvalHint::ExprTypeChecked;
 use util::nodemap::{FnvHashSet};
diff --git a/src/librustc_lint/unused.rs b/src/librustc_lint/unused.rs
index 36ed06a6c00..9840cd4256f 100644
--- a/src/librustc_lint/unused.rs
+++ b/src/librustc_lint/unused.rs
@@ -9,8 +9,8 @@
 // except according to those terms.
 
 use middle::pat_util;
-use middle::ty;
-use middle::ty::adjustment;
+use rustc::ty;
+use rustc::ty::adjustment;
 use util::nodemap::FnvHashMap;
 use lint::{LateContext, EarlyContext, LintContext, LintArray};
 use lint::{LintPass, EarlyLintPass, LateLintPass};
diff --git a/src/librustc_metadata/astencode.rs b/src/librustc_metadata/astencode.rs
index 4a74dc03fb4..60865888a54 100644
--- a/src/librustc_metadata/astencode.rs
+++ b/src/librustc_metadata/astencode.rs
@@ -27,14 +27,14 @@ use tydecode;
 use tyencode;
 
 use middle::cstore::{InlinedItem, InlinedItemRef};
-use middle::ty::adjustment;
-use middle::ty::cast;
+use rustc::ty::adjustment;
+use rustc::ty::cast;
 use middle::const_qualif::ConstQualif;
 use middle::def::{self, Def};
 use middle::def_id::DefId;
 use middle::region;
-use middle::ty::subst;
-use middle::ty::{self, Ty, TyCtxt};
+use rustc::ty::subst;
+use rustc::ty::{self, Ty, TyCtxt};
 
 use syntax::{ast, ast_util, codemap};
 use syntax::ast::NodeIdAssigner;
diff --git a/src/librustc_metadata/csearch.rs b/src/librustc_metadata/csearch.rs
index 25cc2f91753..b1142393268 100644
--- a/src/librustc_metadata/csearch.rs
+++ b/src/librustc_metadata/csearch.rs
@@ -17,7 +17,7 @@ use middle::cstore::{CrateStore, CrateSource, ChildItem, ExternCrate, FoundAst};
 use middle::cstore::{NativeLibraryKind, LinkMeta, LinkagePreference};
 use middle::def;
 use middle::lang_items;
-use middle::ty::{self, Ty, TyCtxt, VariantKind};
+use rustc::ty::{self, Ty, TyCtxt, VariantKind};
 use middle::def_id::{DefId, DefIndex};
 
 use rustc::front::map as hir_map;
diff --git a/src/librustc_metadata/decoder.rs b/src/librustc_metadata/decoder.rs
index 47273b7f26a..e6f516ccd33 100644
--- a/src/librustc_metadata/decoder.rs
+++ b/src/librustc_metadata/decoder.rs
@@ -32,9 +32,9 @@ use middle::cstore::{DefLike, DlDef, DlField, DlImpl, tls};
 use middle::def::Def;
 use middle::def_id::{DefId, DefIndex};
 use middle::lang_items;
-use middle::ty::subst;
-use middle::ty::{ImplContainer, TraitContainer};
-use middle::ty::{self, Ty, TyCtxt, TypeFoldable, VariantKind};
+use rustc::ty::subst;
+use rustc::ty::{ImplContainer, TraitContainer};
+use rustc::ty::{self, Ty, TyCtxt, TypeFoldable, VariantKind};
 
 use rustc_const_eval::ConstInt;
 
diff --git a/src/librustc_metadata/encoder.rs b/src/librustc_metadata/encoder.rs
index 22b5297df43..0a23cdee23d 100644
--- a/src/librustc_metadata/encoder.rs
+++ b/src/librustc_metadata/encoder.rs
@@ -25,10 +25,10 @@ use middle::def;
 use middle::def_id::{CRATE_DEF_INDEX, DefId};
 use middle::dependency_format::Linkage;
 use middle::stability;
-use middle::ty::subst;
-use middle::traits::specialization_graph;
-use middle::ty::{self, Ty, TyCtxt};
-use middle::ty::util::IntTypeExt;
+use rustc::ty::subst;
+use rustc::traits::specialization_graph;
+use rustc::ty::{self, Ty, TyCtxt};
+use rustc::ty::util::IntTypeExt;
 
 use rustc::back::svh::Svh;
 use rustc::front::map::{LinkedPath, PathElem, PathElems};
diff --git a/src/librustc_metadata/tls_context.rs b/src/librustc_metadata/tls_context.rs
index 2ba3e351c50..6ecd7a7f50a 100644
--- a/src/librustc_metadata/tls_context.rs
+++ b/src/librustc_metadata/tls_context.rs
@@ -15,8 +15,8 @@ use rbml::opaque::Encoder as OpaqueEncoder;
 use rbml::opaque::Decoder as OpaqueDecoder;
 use rustc::middle::cstore::tls;
 use rustc::middle::def_id::DefId;
-use rustc::middle::ty::subst::Substs;
-use rustc::middle::ty::{self, TyCtxt};
+use rustc::ty::subst::Substs;
+use rustc::ty::{self, TyCtxt};
 
 use decoder::{self, Cmd};
 use encoder;
diff --git a/src/librustc_metadata/tydecode.rs b/src/librustc_metadata/tydecode.rs
index 8c88a63a161..ed59fce77a0 100644
--- a/src/librustc_metadata/tydecode.rs
+++ b/src/librustc_metadata/tydecode.rs
@@ -20,9 +20,9 @@ use rustc_front::hir;
 
 use middle::def_id::{DefId, DefIndex};
 use middle::region;
-use middle::ty::subst;
-use middle::ty::subst::VecPerParamSpace;
-use middle::ty::{self, ToPredicate, Ty, TyCtxt, TypeFoldable};
+use rustc::ty::subst;
+use rustc::ty::subst::VecPerParamSpace;
+use rustc::ty::{self, ToPredicate, Ty, TyCtxt, TypeFoldable};
 
 use rbml;
 use rbml::leb128;
diff --git a/src/librustc_metadata/tyencode.rs b/src/librustc_metadata/tyencode.rs
index 6fc9b91213d..1d57918d173 100644
--- a/src/librustc_metadata/tyencode.rs
+++ b/src/librustc_metadata/tyencode.rs
@@ -19,10 +19,10 @@ use std::io::prelude::*;
 
 use middle::def_id::DefId;
 use middle::region;
-use middle::ty::subst;
-use middle::ty::subst::VecPerParamSpace;
-use middle::ty::ParamTy;
-use middle::ty::{self, Ty, TyCtxt};
+use rustc::ty::subst;
+use rustc::ty::subst::VecPerParamSpace;
+use rustc::ty::ParamTy;
+use rustc::ty::{self, Ty, TyCtxt};
 use rustc::util::nodemap::FnvHashMap;
 
 use rustc_front::hir;
diff --git a/src/librustc_mir/build/expr/into.rs b/src/librustc_mir/build/expr/into.rs
index 30c039cdde0..231d7da10a0 100644
--- a/src/librustc_mir/build/expr/into.rs
+++ b/src/librustc_mir/build/expr/into.rs
@@ -15,7 +15,7 @@ use build::expr::category::{Category, RvalueFunc};
 use build::scope::LoopScope;
 use hair::*;
 use rustc::middle::region::CodeExtent;
-use rustc::middle::ty;
+use rustc::ty;
 use rustc::mir::repr::*;
 use syntax::codemap::Span;
 
diff --git a/src/librustc_mir/build/matches/mod.rs b/src/librustc_mir/build/matches/mod.rs
index b1286e935b6..581e8e35ee8 100644
--- a/src/librustc_mir/build/matches/mod.rs
+++ b/src/librustc_mir/build/matches/mod.rs
@@ -16,7 +16,7 @@
 use build::{BlockAnd, BlockAndExtension, Builder};
 use rustc_data_structures::fnv::FnvHashMap;
 use rustc::middle::const_eval::ConstVal;
-use rustc::middle::ty::{AdtDef, Ty};
+use rustc::ty::{AdtDef, Ty};
 use rustc::mir::repr::*;
 use hair::*;
 use syntax::ast::{Name, NodeId};
diff --git a/src/librustc_mir/build/matches/test.rs b/src/librustc_mir/build/matches/test.rs
index 3211e5849a0..5a1c3739ef5 100644
--- a/src/librustc_mir/build/matches/test.rs
+++ b/src/librustc_mir/build/matches/test.rs
@@ -20,7 +20,7 @@ use build::matches::{Candidate, MatchPair, Test, TestKind};
 use hair::*;
 use rustc_data_structures::fnv::FnvHashMap;
 use rustc::middle::const_eval::ConstVal;
-use rustc::middle::ty::{self, Ty};
+use rustc::ty::{self, Ty};
 use rustc::mir::repr::*;
 use syntax::codemap::Span;
 
diff --git a/src/librustc_mir/build/misc.rs b/src/librustc_mir/build/misc.rs
index 0d169078330..86f15a63193 100644
--- a/src/librustc_mir/build/misc.rs
+++ b/src/librustc_mir/build/misc.rs
@@ -12,7 +12,7 @@
 //! kind of thing.
 
 use build::Builder;
-use rustc::middle::ty::Ty;
+use rustc::ty::Ty;
 use rustc::mir::repr::*;
 use std::u32;
 use syntax::codemap::Span;
diff --git a/src/librustc_mir/build/mod.rs b/src/librustc_mir/build/mod.rs
index b79f492179f..82f7ddebf0b 100644
--- a/src/librustc_mir/build/mod.rs
+++ b/src/librustc_mir/build/mod.rs
@@ -10,7 +10,7 @@
 
 use hair::cx::Cx;
 use rustc::middle::region::{CodeExtent, CodeExtentData};
-use rustc::middle::ty::{FnOutput, Ty};
+use rustc::ty::{FnOutput, Ty};
 use rustc::mir::repr::*;
 use rustc_data_structures::fnv::FnvHashMap;
 use rustc_front::hir;
diff --git a/src/librustc_mir/build/scope.rs b/src/librustc_mir/build/scope.rs
index 033e1361d4a..bac7b310dc7 100644
--- a/src/librustc_mir/build/scope.rs
+++ b/src/librustc_mir/build/scope.rs
@@ -89,8 +89,8 @@ should go to.
 use build::{BlockAnd, BlockAndExtension, Builder, CFG, ScopeAuxiliary};
 use rustc::middle::region::{CodeExtent, CodeExtentData};
 use rustc::middle::lang_items;
-use rustc::middle::ty::subst::{Substs, Subst, VecPerParamSpace};
-use rustc::middle::ty::{self, Ty, TyCtxt};
+use rustc::ty::subst::{Substs, Subst, VecPerParamSpace};
+use rustc::ty::{self, Ty, TyCtxt};
 use rustc::mir::repr::*;
 use syntax::codemap::{Span, DUMMY_SP};
 use syntax::parse::token::intern_and_get_ident;
diff --git a/src/librustc_mir/graphviz.rs b/src/librustc_mir/graphviz.rs
index a5e749ea687..959b1fdef52 100644
--- a/src/librustc_mir/graphviz.rs
+++ b/src/librustc_mir/graphviz.rs
@@ -10,7 +10,7 @@
 
 use dot;
 use rustc::mir::repr::*;
-use rustc::middle::ty;
+use rustc::ty;
 use std::fmt::Debug;
 use std::io::{self, Write};
 use syntax::ast::NodeId;
diff --git a/src/librustc_mir/hair/cx/expr.rs b/src/librustc_mir/hair/cx/expr.rs
index 4d87d926e40..aa55ee3e3f7 100644
--- a/src/librustc_mir/hair/cx/expr.rs
+++ b/src/librustc_mir/hair/cx/expr.rs
@@ -19,7 +19,7 @@ use rustc::middle::def::Def;
 use rustc::middle::const_eval::{self, ConstVal};
 use rustc::middle::region::CodeExtent;
 use rustc::middle::pat_util;
-use rustc::middle::ty::{self, VariantDef, Ty};
+use rustc::ty::{self, VariantDef, Ty};
 use rustc::mir::repr::*;
 use rustc_front::hir;
 use rustc_front::util as hir_util;
diff --git a/src/librustc_mir/hair/cx/mod.rs b/src/librustc_mir/hair/cx/mod.rs
index d603979906d..30467a981d9 100644
--- a/src/librustc_mir/hair/cx/mod.rs
+++ b/src/librustc_mir/hair/cx/mod.rs
@@ -20,9 +20,9 @@ use rustc::mir::repr::*;
 
 use rustc::middle::const_eval::{self, ConstVal};
 use rustc::middle::def_id::DefId;
-use rustc::middle::infer::InferCtxt;
-use rustc::middle::ty::subst::{Subst, Substs};
-use rustc::middle::ty::{self, Ty, TyCtxt};
+use rustc::infer::InferCtxt;
+use rustc::ty::subst::{Subst, Substs};
+use rustc::ty::{self, Ty, TyCtxt};
 use syntax::codemap::Span;
 use syntax::parse::token;
 use rustc_front::hir;
diff --git a/src/librustc_mir/hair/cx/pattern.rs b/src/librustc_mir/hair/cx/pattern.rs
index a582a4622a6..0cb849555f2 100644
--- a/src/librustc_mir/hair/cx/pattern.rs
+++ b/src/librustc_mir/hair/cx/pattern.rs
@@ -14,7 +14,7 @@ use rustc_data_structures::fnv::FnvHashMap;
 use rustc::middle::const_eval;
 use rustc::middle::def::Def;
 use rustc::middle::pat_util::{pat_is_resolved_const, pat_is_binding};
-use rustc::middle::ty::{self, Ty};
+use rustc::ty::{self, Ty};
 use rustc::mir::repr::*;
 use rustc_front::hir::{self, PatKind};
 use syntax::ast;
diff --git a/src/librustc_mir/hair/mod.rs b/src/librustc_mir/hair/mod.rs
index 3eca7f0a877..79c8356bb55 100644
--- a/src/librustc_mir/hair/mod.rs
+++ b/src/librustc_mir/hair/mod.rs
@@ -19,8 +19,8 @@ use rustc::mir::repr::{BinOp, BorrowKind, Field, Literal, Mutability, UnOp,
 use rustc::middle::const_eval::ConstVal;
 use rustc::middle::def_id::DefId;
 use rustc::middle::region::CodeExtent;
-use rustc::middle::ty::subst::Substs;
-use rustc::middle::ty::{self, AdtDef, ClosureSubsts, Region, Ty};
+use rustc::ty::subst::Substs;
+use rustc::ty::{self, AdtDef, ClosureSubsts, Region, Ty};
 use rustc_front::hir;
 use syntax::ast;
 use syntax::codemap::Span;
diff --git a/src/librustc_mir/mir_map.rs b/src/librustc_mir/mir_map.rs
index 5a6e2edfdf9..21cc8d35320 100644
--- a/src/librustc_mir/mir_map.rs
+++ b/src/librustc_mir/mir_map.rs
@@ -26,9 +26,9 @@ use pretty;
 use hair::cx::Cx;
 
 use rustc::mir::mir_map::MirMap;
-use rustc::middle::infer;
-use rustc::middle::traits::ProjectionMode;
-use rustc::middle::ty::{self, Ty, TyCtxt};
+use rustc::infer;
+use rustc::traits::ProjectionMode;
+use rustc::ty::{self, Ty, TyCtxt};
 use rustc::util::common::ErrorReported;
 use rustc::util::nodemap::NodeMap;
 use rustc_front::hir;
diff --git a/src/librustc_mir/pretty.rs b/src/librustc_mir/pretty.rs
index 834897f8eae..2c50697c37f 100644
--- a/src/librustc_mir/pretty.rs
+++ b/src/librustc_mir/pretty.rs
@@ -10,7 +10,7 @@
 
 use build::{Location, ScopeAuxiliaryVec};
 use rustc::mir::repr::*;
-use rustc::middle::ty::{self, TyCtxt};
+use rustc::ty::{self, TyCtxt};
 use rustc_data_structures::fnv::FnvHashMap;
 use std::fmt::Display;
 use std::fs;
diff --git a/src/librustc_mir/transform/erase_regions.rs b/src/librustc_mir/transform/erase_regions.rs
index 6ea684c2f5c..12bfa3aebc2 100644
--- a/src/librustc_mir/transform/erase_regions.rs
+++ b/src/librustc_mir/transform/erase_regions.rs
@@ -12,8 +12,8 @@
 //! We want to do this once just before trans, so trans does not have to take
 //! care erasing regions all over the place.
 
-use rustc::middle::subst::Substs;
-use rustc::middle::ty::{Ty, TyCtxt};
+use rustc::ty::subst::Substs;
+use rustc::ty::{Ty, TyCtxt};
 use rustc::mir::repr::*;
 use rustc::mir::visit::MutVisitor;
 use rustc::mir::transform::{MirPass, Pass};
diff --git a/src/librustc_mir/transform/no_landing_pads.rs b/src/librustc_mir/transform/no_landing_pads.rs
index 0e9a1810787..edfe75b8430 100644
--- a/src/librustc_mir/transform/no_landing_pads.rs
+++ b/src/librustc_mir/transform/no_landing_pads.rs
@@ -11,7 +11,7 @@
 //! This pass removes the unwind branch of all the terminators when the no-landing-pads option is
 //! specified.
 
-use rustc::middle::ty::TyCtxt;
+use rustc::ty::TyCtxt;
 use rustc::mir::repr::*;
 use rustc::mir::visit::MutVisitor;
 use rustc::mir::transform::{Pass, MirPass};
diff --git a/src/librustc_mir/transform/remove_dead_blocks.rs b/src/librustc_mir/transform/remove_dead_blocks.rs
index 4513aeef86d..dc1ddad124f 100644
--- a/src/librustc_mir/transform/remove_dead_blocks.rs
+++ b/src/librustc_mir/transform/remove_dead_blocks.rs
@@ -33,7 +33,7 @@
 //! and does not renumber anything.
 
 use rustc_data_structures::bitvec::BitVector;
-use rustc::middle::ty::TyCtxt;
+use rustc::ty::TyCtxt;
 use rustc::mir::repr::*;
 use rustc::mir::transform::{Pass, MirPass};
 use syntax::ast::NodeId;
diff --git a/src/librustc_mir/transform/simplify_cfg.rs b/src/librustc_mir/transform/simplify_cfg.rs
index 21b1d022fda..cbde292cb99 100644
--- a/src/librustc_mir/transform/simplify_cfg.rs
+++ b/src/librustc_mir/transform/simplify_cfg.rs
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 use rustc::middle::const_eval::ConstVal;
-use rustc::middle::ty::TyCtxt;
+use rustc::ty::TyCtxt;
 use rustc::mir::repr::*;
 use rustc::mir::transform::{MirPass, Pass};
 use pretty;
diff --git a/src/librustc_mir/transform/type_check.rs b/src/librustc_mir/transform/type_check.rs
index c0605ebe6d4..6cfde27ac97 100644
--- a/src/librustc_mir/transform/type_check.rs
+++ b/src/librustc_mir/transform/type_check.rs
@@ -12,10 +12,10 @@
 #![allow(unreachable_code)]
 
 use rustc::dep_graph::DepNode;
-use rustc::middle::infer::{self, InferCtxt};
-use rustc::middle::traits::{self, ProjectionMode};
-use rustc::middle::ty::fold::TypeFoldable;
-use rustc::middle::ty::{self, Ty, TyCtxt};
+use rustc::infer::{self, InferCtxt};
+use rustc::traits::{self, ProjectionMode};
+use rustc::ty::fold::TypeFoldable;
+use rustc::ty::{self, Ty, TyCtxt};
 use rustc::mir::repr::*;
 use rustc::mir::tcx::LvalueTy;
 use rustc::mir::transform::{MirPass, Pass};
diff --git a/src/librustc_passes/consts.rs b/src/librustc_passes/consts.rs
index c2b76459418..571d5bd9bc5 100644
--- a/src/librustc_passes/consts.rs
+++ b/src/librustc_passes/consts.rs
@@ -25,18 +25,18 @@
 // by borrowck::gather_loans
 
 use rustc::dep_graph::DepNode;
-use rustc::middle::ty::cast::{CastKind};
+use rustc::ty::cast::{CastKind};
 use rustc::middle::const_eval::{self, ConstEvalErr};
 use rustc::middle::const_eval::ErrKind::IndexOpFeatureGated;
 use rustc::middle::const_eval::EvalHint::ExprTypeChecked;
 use rustc::middle::def::Def;
 use rustc::middle::def_id::DefId;
 use rustc::middle::expr_use_visitor as euv;
-use rustc::middle::infer;
+use rustc::infer;
 use rustc::middle::mem_categorization as mc;
 use rustc::middle::mem_categorization::Categorization;
-use rustc::middle::ty::{self, Ty, TyCtxt};
-use rustc::middle::traits::{self, ProjectionMode};
+use rustc::ty::{self, Ty, TyCtxt};
+use rustc::traits::{self, ProjectionMode};
 use rustc::util::nodemap::NodeMap;
 use rustc::middle::const_qualif::ConstQualif;
 use rustc::lint::builtin::CONST_ERR;
diff --git a/src/librustc_passes/rvalues.rs b/src/librustc_passes/rvalues.rs
index 88048b514e1..98502f5a16e 100644
--- a/src/librustc_passes/rvalues.rs
+++ b/src/librustc_passes/rvalues.rs
@@ -13,10 +13,10 @@
 
 use rustc::dep_graph::DepNode;
 use rustc::middle::expr_use_visitor as euv;
-use rustc::middle::infer;
+use rustc::infer;
 use rustc::middle::mem_categorization as mc;
-use rustc::middle::ty::{self, TyCtxt, ParameterEnvironment};
-use rustc::middle::traits::ProjectionMode;
+use rustc::ty::{self, TyCtxt, ParameterEnvironment};
+use rustc::traits::ProjectionMode;
 
 use rustc_front::hir;
 use rustc_front::intravisit;
diff --git a/src/librustc_platform_intrinsics/aarch64.rs b/src/librustc_platform_intrinsics/aarch64.rs
index 59986a905a2..97fe632a529 100644
--- a/src/librustc_platform_intrinsics/aarch64.rs
+++ b/src/librustc_platform_intrinsics/aarch64.rs
@@ -15,7 +15,7 @@
 
 use {Intrinsic, Type};
 use IntrinsicDef::Named;
-use rustc::middle::ty::TyCtxt;
+use rustc::ty::TyCtxt;
 
 // The default inlining settings trigger a pathological behaviour in
 // LLVM, which causes makes compilation very slow. See #28273.
diff --git a/src/librustc_platform_intrinsics/arm.rs b/src/librustc_platform_intrinsics/arm.rs
index d71f59e8e68..65751d65232 100644
--- a/src/librustc_platform_intrinsics/arm.rs
+++ b/src/librustc_platform_intrinsics/arm.rs
@@ -15,7 +15,7 @@
 
 use {Intrinsic, Type};
 use IntrinsicDef::Named;
-use rustc::middle::ty::TyCtxt;
+use rustc::ty::TyCtxt;
 
 // The default inlining settings trigger a pathological behaviour in
 // LLVM, which causes makes compilation very slow. See #28273.
diff --git a/src/librustc_platform_intrinsics/lib.rs b/src/librustc_platform_intrinsics/lib.rs
index 53976308bdc..9736d558769 100644
--- a/src/librustc_platform_intrinsics/lib.rs
+++ b/src/librustc_platform_intrinsics/lib.rs
@@ -19,7 +19,7 @@
 extern crate rustc_llvm as llvm;
 extern crate rustc;
 
-use rustc::middle::ty::TyCtxt;
+use rustc::ty::TyCtxt;
 
 pub struct Intrinsic {
     pub inputs: &'static [&'static Type],
diff --git a/src/librustc_platform_intrinsics/x86.rs b/src/librustc_platform_intrinsics/x86.rs
index eccdc77f33c..de9d3dcf355 100644
--- a/src/librustc_platform_intrinsics/x86.rs
+++ b/src/librustc_platform_intrinsics/x86.rs
@@ -15,7 +15,7 @@
 
 use {Intrinsic, Type};
 use IntrinsicDef::Named;
-use rustc::middle::ty::TyCtxt;
+use rustc::ty::TyCtxt;
 
 // The default inlining settings trigger a pathological behaviour in
 // LLVM, which causes makes compilation very slow. See #28273.
diff --git a/src/librustc_privacy/lib.rs b/src/librustc_privacy/lib.rs
index 79ccc8fb2b2..304932df412 100644
--- a/src/librustc_privacy/lib.rs
+++ b/src/librustc_privacy/lib.rs
@@ -42,7 +42,7 @@ use rustc::middle::cstore::CrateStore;
 use rustc::middle::def::{self, Def};
 use rustc::middle::def_id::DefId;
 use rustc::middle::privacy::{AccessLevel, AccessLevels};
-use rustc::middle::ty::{self, TyCtxt};
+use rustc::ty::{self, TyCtxt};
 use rustc::util::nodemap::{NodeMap, NodeSet};
 use rustc::front::map as ast_map;
 
diff --git a/src/librustc_resolve/build_reduced_graph.rs b/src/librustc_resolve/build_reduced_graph.rs
index fac79eb8a28..211bff352fe 100644
--- a/src/librustc_resolve/build_reduced_graph.rs
+++ b/src/librustc_resolve/build_reduced_graph.rs
@@ -26,7 +26,7 @@ use {resolve_error, resolve_struct_error, ResolutionError};
 use rustc::middle::cstore::{CrateStore, ChildItem, DlDef};
 use rustc::middle::def::*;
 use rustc::middle::def_id::{CRATE_DEF_INDEX, DefId};
-use rustc::middle::ty::VariantKind;
+use rustc::ty::VariantKind;
 
 use syntax::ast::{Name, NodeId};
 use syntax::attr::AttrMetaMethods;
diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs
index fb0f0125812..2f6d5e1c36e 100644
--- a/src/librustc_resolve/lib.rs
+++ b/src/librustc_resolve/lib.rs
@@ -55,8 +55,8 @@ use rustc::middle::cstore::CrateStore;
 use rustc::middle::def::*;
 use rustc::middle::def_id::DefId;
 use rustc::middle::pat_util::pat_bindings;
-use rustc::middle::ty::subst::{ParamSpace, FnSpace, TypeSpace};
-use rustc::middle::ty::{Freevar, FreevarMap, TraitMap, GlobMap};
+use rustc::ty::subst::{ParamSpace, FnSpace, TypeSpace};
+use rustc::ty::{Freevar, FreevarMap, TraitMap, GlobMap};
 use rustc::util::nodemap::{NodeMap, FnvHashMap};
 
 use syntax::ast::{self, FloatTy};
diff --git a/src/librustc_trans/back/symbol_names.rs b/src/librustc_trans/back/symbol_names.rs
index 5d578011da8..f11be65521b 100644
--- a/src/librustc_trans/back/symbol_names.rs
+++ b/src/librustc_trans/back/symbol_names.rs
@@ -102,8 +102,8 @@ use util::sha2::{Digest, Sha256};
 
 use rustc::middle::cstore;
 use rustc::middle::def_id::DefId;
-use rustc::middle::ty::{self, TypeFoldable};
-use rustc::middle::ty::item_path::{ItemPathBuffer, RootMode};
+use rustc::ty::{self, TypeFoldable};
+use rustc::ty::item_path::{ItemPathBuffer, RootMode};
 use rustc::front::map::definitions::{DefPath, DefPathData};
 
 use std::fmt::Write;
diff --git a/src/librustc_trans/save/data.rs b/src/librustc_trans/save/data.rs
index 3eaaa3fc493..b9d9d58b5bd 100644
--- a/src/librustc_trans/save/data.rs
+++ b/src/librustc_trans/save/data.rs
@@ -16,7 +16,7 @@
 use std::hash::Hasher;
 
 use middle::def_id::DefId;
-use middle::ty;
+use rustc::ty;
 use syntax::ast::{CrateNum, NodeId};
 use syntax::codemap::Span;
 
diff --git a/src/librustc_trans/save/dump_visitor.rs b/src/librustc_trans/save/dump_visitor.rs
index 65f48d1ff5e..9d465d87047 100644
--- a/src/librustc_trans/save/dump_visitor.rs
+++ b/src/librustc_trans/save/dump_visitor.rs
@@ -31,7 +31,7 @@ use session::Session;
 
 use middle::def::Def;
 use middle::def_id::DefId;
-use middle::ty::{self, TyCtxt};
+use rustc::ty::{self, TyCtxt};
 
 use std::collections::HashSet;
 use std::hash::*;
diff --git a/src/librustc_trans/save/mod.rs b/src/librustc_trans/save/mod.rs
index 4bbb7624693..c07733b218a 100644
--- a/src/librustc_trans/save/mod.rs
+++ b/src/librustc_trans/save/mod.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use middle::ty::{self, TyCtxt};
+use rustc::ty::{self, TyCtxt};
 use middle::def::Def;
 use middle::def_id::DefId;
 
diff --git a/src/librustc_trans/trans/_match.rs b/src/librustc_trans/trans/_match.rs
index 561fd022ece..7794ac763c6 100644
--- a/src/librustc_trans/trans/_match.rs
+++ b/src/librustc_trans/trans/_match.rs
@@ -195,12 +195,12 @@ use middle::const_eval;
 use middle::def::{Def, DefMap};
 use middle::def_id::DefId;
 use middle::expr_use_visitor as euv;
-use middle::infer;
+use rustc::infer;
 use middle::lang_items::StrEqFnLangItem;
 use middle::mem_categorization as mc;
 use middle::mem_categorization::Categorization;
 use middle::pat_util::*;
-use middle::ty::subst::Substs;
+use rustc::ty::subst::Substs;
 use trans::adt;
 use trans::base::*;
 use trans::build::{AddCase, And, Br, CondBr, GEPi, InBoundsGEP, Load, PointerCast};
@@ -218,8 +218,8 @@ use trans::tvec;
 use trans::type_of;
 use trans::Disr;
 use trans::value::Value;
-use middle::ty::{self, Ty, TyCtxt};
-use middle::traits::ProjectionMode;
+use rustc::ty::{self, Ty, TyCtxt};
+use rustc::traits::ProjectionMode;
 use session::config::NoDebugInfo;
 use util::common::indenter;
 use util::nodemap::FnvHashMap;
diff --git a/src/librustc_trans/trans/abi.rs b/src/librustc_trans/trans/abi.rs
index fd086522b2e..87253924172 100644
--- a/src/librustc_trans/trans/abi.rs
+++ b/src/librustc_trans/trans/abi.rs
@@ -27,7 +27,7 @@ use trans::type_::Type;
 use trans::type_of;
 
 use rustc_front::hir;
-use middle::ty::{self, Ty};
+use rustc::ty::{self, Ty};
 
 use libc::c_uint;
 
@@ -318,7 +318,7 @@ impl FnType {
             }
 
             ty::TyRef(b, mt) => {
-                use middle::ty::{BrAnon, ReLateBound};
+                use rustc::ty::{BrAnon, ReLateBound};
 
                 // `&mut` pointer parameters never alias other parameters, or mutable global data
                 //
diff --git a/src/librustc_trans/trans/adt.rs b/src/librustc_trans/trans/adt.rs
index e94c4ebe3b5..f14c1a573cc 100644
--- a/src/librustc_trans/trans/adt.rs
+++ b/src/librustc_trans/trans/adt.rs
@@ -48,8 +48,8 @@ use std;
 use std::rc::Rc;
 
 use llvm::{ValueRef, True, IntEQ, IntNE};
-use middle::ty::subst;
-use middle::ty::{self, Ty, TyCtxt};
+use rustc::ty::subst;
+use rustc::ty::{self, Ty, TyCtxt};
 use syntax::ast;
 use syntax::attr;
 use syntax::attr::IntType;
diff --git a/src/librustc_trans/trans/assert_dep_graph.rs b/src/librustc_trans/trans/assert_dep_graph.rs
index 11386715492..dcf23039e25 100644
--- a/src/librustc_trans/trans/assert_dep_graph.rs
+++ b/src/librustc_trans/trans/assert_dep_graph.rs
@@ -40,7 +40,7 @@
 use graphviz as dot;
 use rustc::dep_graph::{DepGraphQuery, DepNode};
 use rustc::middle::def_id::DefId;
-use rustc::middle::ty::TyCtxt;
+use rustc::ty::TyCtxt;
 use rustc_data_structures::fnv::{FnvHashMap, FnvHashSet};
 use rustc_data_structures::graph::{Direction, INCOMING, OUTGOING, NodeIndex};
 use rustc_front::hir;
diff --git a/src/librustc_trans/trans/base.rs b/src/librustc_trans/trans/base.rs
index 5d7da08cf9f..d4add752fa4 100644
--- a/src/librustc_trans/trans/base.rs
+++ b/src/librustc_trans/trans/base.rs
@@ -34,17 +34,17 @@ use back::{link, symbol_names};
 use lint;
 use llvm::{BasicBlockRef, Linkage, ValueRef, Vector, get_param};
 use llvm;
-use middle::cfg;
+use rustc::cfg;
 use middle::cstore::CrateStore;
 use middle::def_id::DefId;
-use middle::infer;
+use rustc::infer;
 use middle::lang_items::{LangItem, ExchangeMallocFnLangItem, StartFnLangItem};
 use middle::weak_lang_items;
 use middle::pat_util::simple_name;
-use middle::ty::subst::{self, Substs};
-use middle::traits;
-use middle::ty::{self, Ty, TyCtxt, TypeFoldable};
-use middle::ty::adjustment::CustomCoerceUnsized;
+use rustc::ty::subst::{self, Substs};
+use rustc::traits;
+use rustc::ty::{self, Ty, TyCtxt, TypeFoldable};
+use rustc::ty::adjustment::CustomCoerceUnsized;
 use rustc::dep_graph::DepNode;
 use rustc::front::map as hir_map;
 use rustc::util::common::time;
diff --git a/src/librustc_trans/trans/callee.rs b/src/librustc_trans/trans/callee.rs
index baad981a8c8..8559db3ce5e 100644
--- a/src/librustc_trans/trans/callee.rs
+++ b/src/librustc_trans/trans/callee.rs
@@ -22,10 +22,10 @@ use back::symbol_names;
 use llvm::{self, ValueRef, get_params};
 use middle::cstore::LOCAL_CRATE;
 use middle::def_id::DefId;
-use middle::infer;
-use middle::ty::subst;
-use middle::ty::subst::{Substs};
-use middle::traits;
+use rustc::infer;
+use rustc::ty::subst;
+use rustc::ty::subst::{Substs};
+use rustc::traits;
 use rustc::front::map as hir_map;
 use trans::abi::{Abi, FnType};
 use trans::adt;
@@ -53,7 +53,7 @@ use trans::type_::Type;
 use trans::type_of;
 use trans::value::Value;
 use trans::Disr;
-use middle::ty::{self, Ty, TyCtxt, TypeFoldable};
+use rustc::ty::{self, Ty, TyCtxt, TypeFoldable};
 use rustc_front::hir;
 
 use syntax::codemap::DUMMY_SP;
diff --git a/src/librustc_trans/trans/cleanup.rs b/src/librustc_trans/trans/cleanup.rs
index bd2d05915f6..78481e0ed92 100644
--- a/src/librustc_trans/trans/cleanup.rs
+++ b/src/librustc_trans/trans/cleanup.rs
@@ -130,7 +130,7 @@ use trans::glue;
 use middle::region;
 use trans::type_::Type;
 use trans::value::Value;
-use middle::ty::{Ty, TyCtxt};
+use rustc::ty::{Ty, TyCtxt};
 
 use std::fmt;
 use syntax::ast;
diff --git a/src/librustc_trans/trans/closure.rs b/src/librustc_trans/trans/closure.rs
index ff3235385a9..3040d6a37c1 100644
--- a/src/librustc_trans/trans/closure.rs
+++ b/src/librustc_trans/trans/closure.rs
@@ -12,8 +12,8 @@ use arena::TypedArena;
 use back::symbol_names;
 use llvm::{ValueRef, get_param, get_params};
 use middle::def_id::DefId;
-use middle::infer;
-use middle::traits::ProjectionMode;
+use rustc::infer;
+use rustc::traits::ProjectionMode;
 use trans::abi::{Abi, FnType};
 use trans::adt;
 use trans::attributes;
@@ -30,7 +30,7 @@ use trans::expr;
 use trans::monomorphize::{Instance};
 use trans::value::Value;
 use trans::Disr;
-use middle::ty::{self, Ty, TyCtxt};
+use rustc::ty::{self, Ty, TyCtxt};
 use session::config::FullDebugInfo;
 
 use syntax::ast;
diff --git a/src/librustc_trans/trans/collector.rs b/src/librustc_trans/trans/collector.rs
index 41bd7497433..5c36f9bb68c 100644
--- a/src/librustc_trans/trans/collector.rs
+++ b/src/librustc_trans/trans/collector.rs
@@ -194,10 +194,10 @@ use rustc_front::intravisit as hir_visit;
 use rustc::front::map as hir_map;
 use rustc::middle::def_id::DefId;
 use rustc::middle::lang_items::{ExchangeFreeFnLangItem, ExchangeMallocFnLangItem};
-use rustc::middle::traits;
-use rustc::middle::ty::subst::{self, Substs, Subst};
-use rustc::middle::ty::{self, Ty, TypeFoldable};
-use rustc::middle::ty::adjustment::CustomCoerceUnsized;
+use rustc::traits;
+use rustc::ty::subst::{self, Substs, Subst};
+use rustc::ty::{self, Ty, TypeFoldable};
+use rustc::ty::adjustment::CustomCoerceUnsized;
 use rustc::mir::repr as mir;
 use rustc::mir::visit as mir_visit;
 use rustc::mir::visit::Visitor as MirVisitor;
@@ -580,7 +580,7 @@ fn find_drop_glue_neighbors<'a, 'tcx>(ccx: &CrateContext<'a, 'tcx>,
     };
 
     if let Some(destructor_did) = destructor_did {
-        use rustc::middle::ty::ToPolyTraitRef;
+        use rustc::ty::ToPolyTraitRef;
 
         let drop_trait_def_id = ccx.tcx()
                                    .lang_items
diff --git a/src/librustc_trans/trans/common.rs b/src/librustc_trans/trans/common.rs
index eb443a3b0b9..a6953f262c8 100644
--- a/src/librustc_trans/trans/common.rs
+++ b/src/librustc_trans/trans/common.rs
@@ -16,12 +16,12 @@ use session::Session;
 use llvm;
 use llvm::{ValueRef, BasicBlockRef, BuilderRef, ContextRef, TypeKind};
 use llvm::{True, False, Bool, OperandBundleDef};
-use middle::cfg;
+use rustc::cfg;
 use middle::def::Def;
 use middle::def_id::DefId;
-use middle::infer;
+use rustc::infer;
 use middle::lang_items::LangItem;
-use middle::ty::subst::Substs;
+use rustc::ty::subst::Substs;
 use trans::abi::{Abi, FnType};
 use trans::base;
 use trans::build;
@@ -37,9 +37,9 @@ use trans::mir::CachedMir;
 use trans::monomorphize;
 use trans::type_::Type;
 use trans::value::Value;
-use middle::ty::{self, Ty, TyCtxt};
-use middle::traits::{self, SelectionContext, ProjectionMode};
-use middle::ty::fold::{TypeFolder, TypeFoldable};
+use rustc::ty::{self, Ty, TyCtxt};
+use rustc::traits::{self, SelectionContext, ProjectionMode};
+use rustc::ty::fold::{TypeFolder, TypeFoldable};
 use rustc_front::hir;
 use util::nodemap::NodeMap;
 
diff --git a/src/librustc_trans/trans/consts.rs b/src/librustc_trans/trans/consts.rs
index 956c40a443f..7b832a7e99a 100644
--- a/src/librustc_trans/trans/consts.rs
+++ b/src/librustc_trans/trans/consts.rs
@@ -32,11 +32,11 @@ use trans::type_::Type;
 use trans::type_of;
 use trans::value::Value;
 use trans::Disr;
-use middle::ty::subst::Substs;
-use middle::ty::adjustment::{AdjustDerefRef, AdjustReifyFnPointer};
-use middle::ty::adjustment::{AdjustUnsafeFnPointer, AdjustMutToConstPointer};
-use middle::ty::{self, Ty, TyCtxt};
-use middle::ty::cast::{CastTy,IntTy};
+use rustc::ty::subst::Substs;
+use rustc::ty::adjustment::{AdjustDerefRef, AdjustReifyFnPointer};
+use rustc::ty::adjustment::{AdjustUnsafeFnPointer, AdjustMutToConstPointer};
+use rustc::ty::{self, Ty, TyCtxt};
+use rustc::ty::cast::{CastTy,IntTy};
 use util::nodemap::NodeMap;
 use rustc_const_eval::{ConstInt, ConstMathErr, ConstUsize, ConstIsize};
 
diff --git a/src/librustc_trans/trans/context.rs b/src/librustc_trans/trans/context.rs
index f2ea8ad8612..4511989534d 100644
--- a/src/librustc_trans/trans/context.rs
+++ b/src/librustc_trans/trans/context.rs
@@ -14,7 +14,7 @@ use rustc::dep_graph::{DepNode, DepTrackingMap, DepTrackingMapConfig};
 use middle::cstore::LinkMeta;
 use middle::def::ExportMap;
 use middle::def_id::DefId;
-use middle::traits;
+use rustc::traits;
 use rustc::mir::mir_map::MirMap;
 use rustc::mir::repr as mir;
 use trans::adt;
@@ -29,8 +29,8 @@ use trans::Instance;
 
 use trans::collector::{TransItem, TransItemState};
 use trans::type_::{Type, TypeNames};
-use middle::ty::subst::{Substs, VecPerParamSpace};
-use middle::ty::{self, Ty, TyCtxt};
+use rustc::ty::subst::{Substs, VecPerParamSpace};
+use rustc::ty::{self, Ty, TyCtxt};
 use session::config::NoDebugInfo;
 use session::Session;
 use util::sha2::Sha256;
diff --git a/src/librustc_trans/trans/controlflow.rs b/src/librustc_trans/trans/controlflow.rs
index 65f5ab1f228..80ff11e968a 100644
--- a/src/librustc_trans/trans/controlflow.rs
+++ b/src/librustc_trans/trans/controlflow.rs
@@ -11,7 +11,7 @@
 use llvm::ValueRef;
 use middle::def::Def;
 use middle::lang_items::{PanicFnLangItem, PanicBoundsCheckFnLangItem};
-use middle::ty::subst::Substs;
+use rustc::ty::subst::Substs;
 use trans::base::*;
 use trans::basic_block::BasicBlock;
 use trans::build::*;
diff --git a/src/librustc_trans/trans/datum.rs b/src/librustc_trans/trans/datum.rs
index 649f6180de2..c0858a6d93b 100644
--- a/src/librustc_trans/trans/datum.rs
+++ b/src/librustc_trans/trans/datum.rs
@@ -102,7 +102,7 @@ use trans::cleanup::{CleanupMethods, DropHintDatum, DropHintMethods};
 use trans::expr;
 use trans::tvec;
 use trans::value::Value;
-use middle::ty::Ty;
+use rustc::ty::Ty;
 
 use std::fmt;
 use syntax::ast;
diff --git a/src/librustc_trans/trans/debuginfo/metadata.rs b/src/librustc_trans/trans/debuginfo/metadata.rs
index a654a3f37c8..bd2a8e0193d 100644
--- a/src/librustc_trans/trans/debuginfo/metadata.rs
+++ b/src/librustc_trans/trans/debuginfo/metadata.rs
@@ -24,16 +24,16 @@ use llvm::{self, ValueRef};
 use llvm::debuginfo::{DIType, DIFile, DIScope, DIDescriptor, DICompositeType};
 
 use middle::def_id::DefId;
-use middle::infer;
+use rustc::infer;
 use middle::pat_util;
-use middle::ty::subst;
+use rustc::ty::subst;
 use rustc::front::map as hir_map;
 use rustc_front::hir::{self, PatKind};
 use trans::{type_of, adt, machine, monomorphize};
 use trans::common::{self, CrateContext, FunctionContext, Block};
 use trans::_match::{BindingInfo, TransBindingMode};
 use trans::type_::Type;
-use middle::ty::{self, Ty};
+use rustc::ty::{self, Ty};
 use session::config::{self, FullDebugInfo};
 use util::nodemap::FnvHashMap;
 use util::common::path2cstr;
diff --git a/src/librustc_trans/trans/debuginfo/mod.rs b/src/librustc_trans/trans/debuginfo/mod.rs
index dbba03cf455..198a9899fda 100644
--- a/src/librustc_trans/trans/debuginfo/mod.rs
+++ b/src/librustc_trans/trans/debuginfo/mod.rs
@@ -27,8 +27,8 @@ use llvm::{ModuleRef, ContextRef, ValueRef};
 use llvm::debuginfo::{DIFile, DIType, DIScope, DIBuilderRef, DISubprogram, DIArray,
                       DIDescriptor, FlagPrototyped};
 use middle::def_id::DefId;
-use middle::infer::normalize_associated_type;
-use middle::ty::subst::{self, Substs};
+use rustc::infer::normalize_associated_type;
+use rustc::ty::subst::{self, Substs};
 use rustc_front;
 use rustc_front::hir;
 
@@ -36,8 +36,8 @@ use trans::abi::Abi;
 use trans::common::{NodeIdAndSpan, CrateContext, FunctionContext, Block};
 use trans;
 use trans::monomorphize;
-use middle::infer;
-use middle::ty::{self, Ty};
+use rustc::infer;
+use rustc::ty::{self, Ty};
 use session::config::{self, FullDebugInfo, LimitedDebugInfo, NoDebugInfo};
 use util::nodemap::{NodeMap, FnvHashMap, FnvHashSet};
 use rustc::front::map as hir_map;
diff --git a/src/librustc_trans/trans/debuginfo/type_names.rs b/src/librustc_trans/trans/debuginfo/type_names.rs
index a051966795d..fc9ace89ab7 100644
--- a/src/librustc_trans/trans/debuginfo/type_names.rs
+++ b/src/librustc_trans/trans/debuginfo/type_names.rs
@@ -14,9 +14,9 @@ use super::namespace::crate_root_namespace;
 
 use trans::common::CrateContext;
 use middle::def_id::DefId;
-use middle::infer;
-use middle::ty::subst;
-use middle::ty::{self, Ty};
+use rustc::infer;
+use rustc::ty::subst;
+use rustc::ty::{self, Ty};
 
 use rustc_front::hir;
 
diff --git a/src/librustc_trans/trans/declare.rs b/src/librustc_trans/trans/declare.rs
index e63f17770bc..41a87f8d6de 100644
--- a/src/librustc_trans/trans/declare.rs
+++ b/src/librustc_trans/trans/declare.rs
@@ -20,8 +20,8 @@
 //! * Use define_* family of methods when you might be defining the ValueRef.
 //! * When in doubt, define.
 use llvm::{self, ValueRef};
-use middle::ty;
-use middle::infer;
+use rustc::ty;
+use rustc::infer;
 use trans::abi::{Abi, FnType};
 use trans::attributes;
 use trans::context::CrateContext;
diff --git a/src/librustc_trans/trans/disr.rs b/src/librustc_trans/trans/disr.rs
index d74c1ac50ad..fc79fa813aa 100644
--- a/src/librustc_trans/trans/disr.rs
+++ b/src/librustc_trans/trans/disr.rs
@@ -24,8 +24,8 @@ impl ::std::ops::BitAnd for Disr {
     }
 }
 
-impl From<::middle::ty::Disr> for Disr {
-    fn from(i: ::middle::ty::Disr) -> Disr {
+impl From<::rustc::ty::Disr> for Disr {
+    fn from(i: ::rustc::ty::Disr) -> Disr {
         Disr(i.to_u64_unchecked())
     }
 }
diff --git a/src/librustc_trans/trans/expr.rs b/src/librustc_trans/trans/expr.rs
index 8b7527fd7de..8f9f44fb2dd 100644
--- a/src/librustc_trans/trans/expr.rs
+++ b/src/librustc_trans/trans/expr.rs
@@ -54,7 +54,7 @@ use self::lazy_binop_ty::*;
 use llvm::{self, ValueRef, TypeKind};
 use middle::const_qualif::ConstQualif;
 use middle::def::Def;
-use middle::ty::subst::Substs;
+use rustc::ty::subst::Substs;
 use trans::{_match, abi, adt, asm, base, closure, consts, controlflow};
 use trans::base::*;
 use trans::build::*;
@@ -70,12 +70,12 @@ use trans::tvec;
 use trans::type_of;
 use trans::value::Value;
 use trans::Disr;
-use middle::ty::adjustment::{AdjustDerefRef, AdjustReifyFnPointer};
-use middle::ty::adjustment::{AdjustUnsafeFnPointer, AdjustMutToConstPointer};
-use middle::ty::adjustment::CustomCoerceUnsized;
-use middle::ty::{self, Ty, TyCtxt};
-use middle::ty::MethodCall;
-use middle::ty::cast::{CastKind, CastTy};
+use rustc::ty::adjustment::{AdjustDerefRef, AdjustReifyFnPointer};
+use rustc::ty::adjustment::{AdjustUnsafeFnPointer, AdjustMutToConstPointer};
+use rustc::ty::adjustment::CustomCoerceUnsized;
+use rustc::ty::{self, Ty, TyCtxt};
+use rustc::ty::MethodCall;
+use rustc::ty::cast::{CastKind, CastTy};
 use util::common::indenter;
 use trans::machine::{llsize_of, llsize_of_alloc};
 use trans::type_::Type;
@@ -1859,8 +1859,8 @@ fn trans_imm_cast<'blk, 'tcx>(bcx: Block<'blk, 'tcx>,
                               id: ast::NodeId)
                               -> DatumBlock<'blk, 'tcx, Expr>
 {
-    use middle::ty::cast::CastTy::*;
-    use middle::ty::cast::IntTy::*;
+    use rustc::ty::cast::CastTy::*;
+    use rustc::ty::cast::IntTy::*;
 
     fn int_cast(bcx: Block,
                 lldsttype: Type,
@@ -2194,7 +2194,7 @@ impl OverflowOpViaIntrinsic {
     fn to_intrinsic_name(&self, tcx: &TyCtxt, ty: Ty) -> &'static str {
         use syntax::ast::IntTy::*;
         use syntax::ast::UintTy::*;
-        use middle::ty::{TyInt, TyUint};
+        use rustc::ty::{TyInt, TyUint};
 
         let new_sty = match ty.sty {
             TyInt(Is) => match &tcx.sess.target.target.target_pointer_width[..] {
diff --git a/src/librustc_trans/trans/glue.rs b/src/librustc_trans/trans/glue.rs
index 972e32a2674..dc4fc5a9ccf 100644
--- a/src/librustc_trans/trans/glue.rs
+++ b/src/librustc_trans/trans/glue.rs
@@ -18,9 +18,9 @@ use back::symbol_names;
 use llvm;
 use llvm::{ValueRef, get_param};
 use middle::lang_items::ExchangeFreeFnLangItem;
-use middle::ty::subst::{Substs};
-use middle::traits;
-use middle::ty::{self, Ty, TyCtxt};
+use rustc::ty::subst::{Substs};
+use rustc::traits;
+use rustc::ty::{self, Ty, TyCtxt};
 use trans::abi::{Abi, FnType};
 use trans::adt;
 use trans::adt::GetDtorType; // for tcx.dtor_type()
diff --git a/src/librustc_trans/trans/inline.rs b/src/librustc_trans/trans/inline.rs
index 3e37b7007c3..b8abc1b6107 100644
--- a/src/librustc_trans/trans/inline.rs
+++ b/src/librustc_trans/trans/inline.rs
@@ -11,7 +11,7 @@
 use llvm::{AvailableExternallyLinkage, InternalLinkage, SetLinkage};
 use middle::cstore::{CrateStore, FoundAst, InlinedItem};
 use middle::def_id::DefId;
-use middle::ty::subst::Substs;
+use rustc::ty::subst::Substs;
 use trans::base::{push_ctxt, trans_item, trans_fn};
 use trans::callee::Callee;
 use trans::common::*;
diff --git a/src/librustc_trans/trans/intrinsic.rs b/src/librustc_trans/trans/intrinsic.rs
index d3b84fbac1a..9577a1817d7 100644
--- a/src/librustc_trans/trans/intrinsic.rs
+++ b/src/librustc_trans/trans/intrinsic.rs
@@ -15,9 +15,9 @@ use intrinsics::{self, Intrinsic};
 use libc;
 use llvm;
 use llvm::{ValueRef, TypeKind};
-use middle::infer;
-use middle::ty::subst;
-use middle::ty::subst::FnSpace;
+use rustc::infer;
+use rustc::ty::subst;
+use rustc::ty::subst::FnSpace;
 use trans::abi::{Abi, FnType};
 use trans::adt;
 use trans::attributes;
@@ -36,9 +36,9 @@ use trans::glue;
 use trans::type_of;
 use trans::machine;
 use trans::type_::Type;
-use middle::ty::{self, Ty, TypeFoldable};
+use rustc::ty::{self, Ty, TypeFoldable};
 use trans::Disr;
-use middle::ty::subst::Substs;
+use rustc::ty::subst::Substs;
 use rustc::dep_graph::DepNode;
 use rustc_front::hir;
 use syntax::ast;
@@ -1694,7 +1694,7 @@ fn generic_simd_intrinsic<'blk, 'tcx, 'a>
 // Returns None if the type is not an integer
 fn int_type_width_signed<'tcx>(sty: &ty::TypeVariants<'tcx>, ccx: &CrateContext)
         -> Option<(u64, bool)> {
-    use rustc::middle::ty::{TyInt, TyUint};
+    use rustc::ty::{TyInt, TyUint};
     match *sty {
         TyInt(t) => Some((match t {
             ast::IntTy::Is => {
@@ -1730,7 +1730,7 @@ fn int_type_width_signed<'tcx>(sty: &ty::TypeVariants<'tcx>, ccx: &CrateContext)
 // Returns None if the type is not a float
 fn float_type_width<'tcx>(sty: &ty::TypeVariants<'tcx>)
         -> Option<u64> {
-    use rustc::middle::ty::TyFloat;
+    use rustc::ty::TyFloat;
     match *sty {
         TyFloat(t) => Some(match t {
             ast::FloatTy::F32 => 32,
diff --git a/src/librustc_trans/trans/meth.rs b/src/librustc_trans/trans/meth.rs
index f08ee4d48dc..696a0e3c0b6 100644
--- a/src/librustc_trans/trans/meth.rs
+++ b/src/librustc_trans/trans/meth.rs
@@ -14,10 +14,10 @@ use arena::TypedArena;
 use back::symbol_names;
 use llvm::{ValueRef, get_params};
 use middle::def_id::DefId;
-use middle::infer;
-use middle::ty::subst::{FnSpace, Subst, Substs};
-use middle::ty::subst;
-use middle::traits::{self, ProjectionMode};
+use rustc::infer;
+use rustc::ty::subst::{FnSpace, Subst, Substs};
+use rustc::ty::subst;
+use rustc::traits::{self, ProjectionMode};
 use trans::abi::FnType;
 use trans::base::*;
 use trans::build::*;
@@ -33,7 +33,7 @@ use trans::machine;
 use trans::type_::Type;
 use trans::type_of::*;
 use trans::value::Value;
-use middle::ty::{self, Ty, TyCtxt, TypeFoldable};
+use rustc::ty::{self, Ty, TyCtxt, TypeFoldable};
 
 use syntax::ast::Name;
 use syntax::codemap::DUMMY_SP;
diff --git a/src/librustc_trans/trans/mir/block.rs b/src/librustc_trans/trans/mir/block.rs
index 7abaeb44c1c..4f76fd56684 100644
--- a/src/librustc_trans/trans/mir/block.rs
+++ b/src/librustc_trans/trans/mir/block.rs
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 use llvm::{self, BasicBlockRef, ValueRef, OperandBundleDef};
-use rustc::middle::ty;
+use rustc::ty;
 use rustc::mir::repr as mir;
 use trans::abi::{Abi, FnType};
 use trans::adt;
diff --git a/src/librustc_trans/trans/mir/constant.rs b/src/librustc_trans/trans/mir/constant.rs
index d4934718d75..1e5c1c2c55a 100644
--- a/src/librustc_trans/trans/mir/constant.rs
+++ b/src/librustc_trans/trans/mir/constant.rs
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 use llvm::ValueRef;
-use middle::ty::{Ty, TypeFoldable};
+use rustc::ty::{Ty, TypeFoldable};
 use rustc::middle::const_eval::{self, ConstVal};
 use rustc_const_eval::ConstInt::*;
 use rustc::mir::repr as mir;
diff --git a/src/librustc_trans/trans/mir/drop.rs b/src/librustc_trans/trans/mir/drop.rs
index 2e13abec5e3..cc033084ace 100644
--- a/src/librustc_trans/trans/mir/drop.rs
+++ b/src/librustc_trans/trans/mir/drop.rs
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 use llvm::ValueRef;
-use rustc::middle::ty::Ty;
+use rustc::ty::Ty;
 use trans::adt;
 use trans::base;
 use trans::common::{self, BlockAndBuilder};
diff --git a/src/librustc_trans/trans/mir/lvalue.rs b/src/librustc_trans/trans/mir/lvalue.rs
index ffc3b120674..6271ad8d8b8 100644
--- a/src/librustc_trans/trans/mir/lvalue.rs
+++ b/src/librustc_trans/trans/mir/lvalue.rs
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 use llvm::ValueRef;
-use rustc::middle::ty::{self, Ty, TypeFoldable};
+use rustc::ty::{self, Ty, TypeFoldable};
 use rustc::mir::repr as mir;
 use rustc::mir::tcx::LvalueTy;
 use trans::abi;
diff --git a/src/librustc_trans/trans/mir/mod.rs b/src/librustc_trans/trans/mir/mod.rs
index 9df2cb712b1..ed4aa5fe583 100644
--- a/src/librustc_trans/trans/mir/mod.rs
+++ b/src/librustc_trans/trans/mir/mod.rs
@@ -10,7 +10,7 @@
 
 use libc::c_uint;
 use llvm::{self, ValueRef};
-use middle::ty;
+use rustc::ty;
 use rustc::mir::repr as mir;
 use rustc::mir::tcx::LvalueTy;
 use trans::base;
diff --git a/src/librustc_trans/trans/mir/operand.rs b/src/librustc_trans/trans/mir/operand.rs
index 6df4502fbc8..cc1446033de 100644
--- a/src/librustc_trans/trans/mir/operand.rs
+++ b/src/librustc_trans/trans/mir/operand.rs
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 use llvm::ValueRef;
-use rustc::middle::ty::Ty;
+use rustc::ty::Ty;
 use rustc::mir::repr as mir;
 use trans::base;
 use trans::common::{self, Block, BlockAndBuilder};
diff --git a/src/librustc_trans/trans/mir/rvalue.rs b/src/librustc_trans/trans/mir/rvalue.rs
index 17c8aef244b..a78d0da5be4 100644
--- a/src/librustc_trans/trans/mir/rvalue.rs
+++ b/src/librustc_trans/trans/mir/rvalue.rs
@@ -9,8 +9,8 @@
 // except according to those terms.
 
 use llvm::ValueRef;
-use rustc::middle::ty::{self, Ty};
-use middle::ty::cast::{CastTy, IntTy};
+use rustc::ty::{self, Ty};
+use rustc::ty::cast::{CastTy, IntTy};
 use middle::const_eval::ConstVal;
 use rustc_const_eval::ConstInt;
 use rustc::mir::repr as mir;
diff --git a/src/librustc_trans/trans/monomorphize.rs b/src/librustc_trans/trans/monomorphize.rs
index 9a1b2790d32..0440c74a60a 100644
--- a/src/librustc_trans/trans/monomorphize.rs
+++ b/src/librustc_trans/trans/monomorphize.rs
@@ -12,11 +12,10 @@ use back::symbol_names;
 use llvm::ValueRef;
 use llvm;
 use middle::def_id::DefId;
-use middle::infer::normalize_associated_type;
-use middle::ty::subst;
-use middle::ty::subst::{Subst, Substs};
-use middle::ty::{self, Ty, TyCtxt};
-use middle::ty::fold::{TypeFolder, TypeFoldable};
+use rustc::infer::normalize_associated_type;
+use rustc::ty::subst;
+use rustc::ty::subst::{Subst, Substs};
+use rustc::ty::{self, Ty, TypeFoldable, TyCtxt};
 use trans::attributes;
 use trans::base::{push_ctxt};
 use trans::base::trans_fn;
diff --git a/src/librustc_trans/trans/symbol_names_test.rs b/src/librustc_trans/trans/symbol_names_test.rs
index 63abbfd53b6..bcfab663966 100644
--- a/src/librustc_trans/trans/symbol_names_test.rs
+++ b/src/librustc_trans/trans/symbol_names_test.rs
@@ -15,7 +15,7 @@
 //! paths etc in all kinds of annoying scenarios.
 
 use back::symbol_names;
-use rustc::middle::ty::TyCtxt;
+use rustc::ty::TyCtxt;
 use rustc_front::hir;
 use rustc_front::intravisit::{self, Visitor};
 use syntax::ast;
diff --git a/src/librustc_trans/trans/tvec.rs b/src/librustc_trans/trans/tvec.rs
index 7a0ca86f5a2..4a7404b1fba 100644
--- a/src/librustc_trans/trans/tvec.rs
+++ b/src/librustc_trans/trans/tvec.rs
@@ -27,7 +27,7 @@ use trans::machine::llsize_of_alloc;
 use trans::type_::Type;
 use trans::type_of;
 use trans::value::Value;
-use middle::ty::{self, Ty};
+use rustc::ty::{self, Ty};
 
 use rustc_front::hir;
 
diff --git a/src/librustc_trans/trans/type_of.rs b/src/librustc_trans/trans/type_of.rs
index e81039908c1..00f42a3b243 100644
--- a/src/librustc_trans/trans/type_of.rs
+++ b/src/librustc_trans/trans/type_of.rs
@@ -11,13 +11,13 @@
 #![allow(non_camel_case_types)]
 
 use middle::def_id::DefId;
-use middle::infer;
-use middle::ty::subst;
+use rustc::infer;
+use rustc::ty::subst;
 use trans::abi::FnType;
 use trans::adt;
 use trans::common::*;
 use trans::machine;
-use middle::ty::{self, Ty, TypeFoldable};
+use rustc::ty::{self, Ty, TypeFoldable};
 
 use trans::type_::Type;
 
@@ -145,7 +145,7 @@ pub fn immediate_type_of<'a, 'tcx>(cx: &CrateContext<'a, 'tcx>, t: Ty<'tcx>) ->
     }
 }
 
-/// Get the LLVM type corresponding to a Rust type, i.e. `middle::ty::Ty`.
+/// Get the LLVM type corresponding to a Rust type, i.e. `rustc::ty::Ty`.
 /// This is the right LLVM type for an alloca containing a value of that type,
 /// and the pointee of an Lvalue Datum (which is always a LLVM pointer).
 /// For unsized types, the returned type is a fat pointer, thus the resulting
@@ -163,7 +163,7 @@ pub fn type_of<'a, 'tcx>(cx: &CrateContext<'a, 'tcx>, ty: Ty<'tcx>) -> Type {
     in_memory_type_of(cx, ty)
 }
 
-/// Get the LLVM type corresponding to a Rust type, i.e. `middle::ty::Ty`.
+/// Get the LLVM type corresponding to a Rust type, i.e. `rustc::ty::Ty`.
 /// This is the right LLVM type for a field/array element of that type,
 /// and is the same as `type_of` for all Sized types.
 /// Unsized types, however, are represented by a "minimal unit", e.g.
diff --git a/src/librustc_typeck/astconv.rs b/src/librustc_typeck/astconv.rs
index 3b3d2cbad10..af40b845767 100644
--- a/src/librustc_typeck/astconv.rs
+++ b/src/librustc_typeck/astconv.rs
@@ -54,10 +54,10 @@ use middle::const_eval::EvalHint::UncheckedExprHint;
 use middle::def::{self, Def};
 use middle::def_id::DefId;
 use middle::resolve_lifetime as rl;
-use middle::ty::subst::{FnSpace, TypeSpace, SelfSpace, Subst, Substs, ParamSpace};
-use middle::traits;
-use middle::ty::{self, Ty, TyCtxt, ToPredicate, TypeFoldable};
-use middle::ty::wf::object_region_bounds;
+use rustc::ty::subst::{FnSpace, TypeSpace, SelfSpace, Subst, Substs, ParamSpace};
+use rustc::traits;
+use rustc::ty::{self, Ty, TyCtxt, ToPredicate, TypeFoldable};
+use rustc::ty::wf::object_region_bounds;
 use require_c_abi_if_variadic;
 use rscope::{self, UnelidableRscope, RegionScope, ElidableRscope,
              ObjectLifetimeDefaultRscope, ShiftedRscope, BindingRscope,
diff --git a/src/librustc_typeck/check/_match.rs b/src/librustc_typeck/check/_match.rs
index 947488bde71..f8fa9c8e9b6 100644
--- a/src/librustc_typeck/check/_match.rs
+++ b/src/librustc_typeck/check/_match.rs
@@ -9,11 +9,11 @@
 // except according to those terms.
 
 use middle::def::{self, Def};
-use middle::infer::{self, TypeOrigin};
+use rustc::infer::{self, TypeOrigin};
 use middle::pat_util::{PatIdMap, pat_id_map, pat_is_binding};
 use middle::pat_util::pat_is_resolved_const;
-use middle::ty::subst::Substs;
-use middle::ty::{self, Ty, TypeFoldable, LvaluePreference};
+use rustc::ty::subst::Substs;
+use rustc::ty::{self, Ty, TypeFoldable, LvaluePreference};
 use check::{check_expr, check_expr_has_type, check_expr_with_expectation};
 use check::{demand, FnCtxt, Expectation};
 use check::{check_expr_with_lvalue_pref};
diff --git a/src/librustc_typeck/check/assoc.rs b/src/librustc_typeck/check/assoc.rs
index 91916efa882..f7726bc9cf4 100644
--- a/src/librustc_typeck/check/assoc.rs
+++ b/src/librustc_typeck/check/assoc.rs
@@ -8,10 +8,10 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use middle::infer::InferCtxt;
-use middle::traits::{self, FulfillmentContext, Normalized, MiscObligation,
+use rustc::infer::InferCtxt;
+use rustc::traits::{self, FulfillmentContext, Normalized, MiscObligation,
                      SelectionContext, ObligationCause};
-use middle::ty::fold::TypeFoldable;
+use rustc::ty::fold::TypeFoldable;
 use syntax::ast;
 use syntax::codemap::Span;
 
diff --git a/src/librustc_typeck/check/callee.rs b/src/librustc_typeck/check/callee.rs
index bf60f435a22..4e582033c8b 100644
--- a/src/librustc_typeck/check/callee.rs
+++ b/src/librustc_typeck/check/callee.rs
@@ -28,8 +28,8 @@ use CrateCtxt;
 use middle::cstore::LOCAL_CRATE;
 use middle::def::Def;
 use middle::def_id::DefId;
-use middle::infer;
-use middle::ty::{self, LvaluePreference, Ty};
+use rustc::infer;
+use rustc::ty::{self, LvaluePreference, Ty};
 use syntax::codemap::Span;
 use syntax::parse::token;
 use syntax::ptr::P;
diff --git a/src/librustc_typeck/check/cast.rs b/src/librustc_typeck/check/cast.rs
index 31c0fea5c2d..7ca4251e4c8 100644
--- a/src/librustc_typeck/check/cast.rs
+++ b/src/librustc_typeck/check/cast.rs
@@ -45,8 +45,8 @@ use super::structurally_resolved_type;
 
 use lint;
 use middle::def_id::DefId;
-use middle::ty::{self, Ty, TypeFoldable};
-use middle::ty::cast::{CastKind, CastTy};
+use rustc::ty::{self, Ty, TypeFoldable};
+use rustc::ty::cast::{CastKind, CastTy};
 use syntax::codemap::Span;
 use rustc_front::hir;
 use syntax::ast;
@@ -238,8 +238,8 @@ impl<'tcx> CastCheck<'tcx> {
     /// can return Ok and create type errors in the fcx rather than returning
     /// directly. coercion-cast is handled in check instead of here.
     fn do_check<'a>(&self, fcx: &FnCtxt<'a, 'tcx>) -> Result<CastKind, CastError> {
-        use middle::ty::cast::IntTy::*;
-        use middle::ty::cast::CastTy::*;
+        use rustc::ty::cast::IntTy::*;
+        use rustc::ty::cast::CastTy::*;
 
         let (t_from, t_cast) = match (CastTy::from_ty(self.expr_ty),
                                       CastTy::from_ty(self.cast_ty)) {
diff --git a/src/librustc_typeck/check/closure.rs b/src/librustc_typeck/check/closure.rs
index 54b2c8c5923..9333b10d27e 100644
--- a/src/librustc_typeck/check/closure.rs
+++ b/src/librustc_typeck/check/closure.rs
@@ -13,8 +13,8 @@
 use super::{check_fn, Expectation, FnCtxt};
 
 use astconv;
-use middle::ty::subst;
-use middle::ty::{self, ToPolyTraitRef, Ty};
+use rustc::ty::subst;
+use rustc::ty::{self, ToPolyTraitRef, Ty};
 use std::cmp;
 use syntax::abi::Abi;
 use rustc_front::hir;
diff --git a/src/librustc_typeck/check/coercion.rs b/src/librustc_typeck/check/coercion.rs
index c62922a33de..dad7d7cd26c 100644
--- a/src/librustc_typeck/check/coercion.rs
+++ b/src/librustc_typeck/check/coercion.rs
@@ -62,16 +62,16 @@
 
 use check::{autoderef, FnCtxt, UnresolvedTypeAction};
 
-use middle::infer::{Coercion, TypeOrigin, TypeTrace};
-use middle::traits::{self, ObligationCause};
-use middle::traits::{predicate_for_trait_def, report_selection_error};
-use middle::ty::adjustment::{AutoAdjustment, AutoDerefRef, AdjustDerefRef};
-use middle::ty::adjustment::{AutoPtr, AutoUnsafe, AdjustReifyFnPointer};
-use middle::ty::adjustment::{AdjustUnsafeFnPointer, AdjustMutToConstPointer};
-use middle::ty::{self, LvaluePreference, TypeAndMut, Ty, TyCtxt};
-use middle::ty::fold::TypeFoldable;
-use middle::ty::error::TypeError;
-use middle::ty::relate::{relate_substs, Relate, RelateResult, TypeRelation};
+use rustc::infer::{Coercion, TypeOrigin, TypeTrace};
+use rustc::traits::{self, ObligationCause};
+use rustc::traits::{predicate_for_trait_def, report_selection_error};
+use rustc::ty::adjustment::{AutoAdjustment, AutoDerefRef, AdjustDerefRef};
+use rustc::ty::adjustment::{AutoPtr, AutoUnsafe, AdjustReifyFnPointer};
+use rustc::ty::adjustment::{AdjustUnsafeFnPointer, AdjustMutToConstPointer};
+use rustc::ty::{self, LvaluePreference, TypeAndMut, Ty, TyCtxt};
+use rustc::ty::fold::TypeFoldable;
+use rustc::ty::error::TypeError;
+use rustc::ty::relate::{relate_substs, Relate, RelateResult, TypeRelation};
 use util::common::indent;
 
 use std::cell::RefCell;
diff --git a/src/librustc_typeck/check/compare_method.rs b/src/librustc_typeck/check/compare_method.rs
index eee3fddcaea..6d429fa7b73 100644
--- a/src/librustc_typeck/check/compare_method.rs
+++ b/src/librustc_typeck/check/compare_method.rs
@@ -9,10 +9,10 @@
 // except according to those terms.
 
 use middle::free_region::FreeRegionMap;
-use middle::infer::{self, TypeOrigin};
-use middle::ty::{self, TyCtxt};
-use middle::traits::{self, ProjectionMode};
-use middle::ty::subst::{self, Subst, Substs, VecPerParamSpace};
+use rustc::infer::{self, TypeOrigin};
+use rustc::ty::{self, TyCtxt};
+use rustc::traits::{self, ProjectionMode};
+use rustc::ty::subst::{self, Subst, Substs, VecPerParamSpace};
 
 use syntax::ast;
 use syntax::codemap::Span;
diff --git a/src/librustc_typeck/check/demand.rs b/src/librustc_typeck/check/demand.rs
index 1f61198bef9..d8bdf6c61aa 100644
--- a/src/librustc_typeck/check/demand.rs
+++ b/src/librustc_typeck/check/demand.rs
@@ -10,8 +10,8 @@
 
 
 use check::{coercion, FnCtxt};
-use middle::ty::Ty;
-use middle::infer::TypeOrigin;
+use rustc::ty::Ty;
+use rustc::infer::TypeOrigin;
 
 use syntax::codemap::Span;
 use rustc_front::hir;
diff --git a/src/librustc_typeck/check/dropck.rs b/src/librustc_typeck/check/dropck.rs
index fd5d06ea9d1..bf2388ab793 100644
--- a/src/librustc_typeck/check/dropck.rs
+++ b/src/librustc_typeck/check/dropck.rs
@@ -12,11 +12,11 @@ use check::regionck::{self, Rcx};
 
 use middle::def_id::DefId;
 use middle::free_region::FreeRegionMap;
-use middle::infer;
+use rustc::infer;
 use middle::region;
-use middle::ty::subst::{self, Subst};
-use middle::ty::{self, Ty, TyCtxt};
-use middle::traits::{self, ProjectionMode};
+use rustc::ty::subst::{self, Subst};
+use rustc::ty::{self, Ty, TyCtxt};
+use rustc::traits::{self, ProjectionMode};
 use util::nodemap::FnvHashSet;
 
 use syntax::ast;
diff --git a/src/librustc_typeck/check/intrinsic.rs b/src/librustc_typeck/check/intrinsic.rs
index 9440be50e21..8720469a724 100644
--- a/src/librustc_typeck/check/intrinsic.rs
+++ b/src/librustc_typeck/check/intrinsic.rs
@@ -13,10 +13,10 @@
 
 use astconv::AstConv;
 use intrinsics;
-use middle::ty::subst::{self, Substs};
-use middle::ty::FnSig;
-use middle::ty::{self, Ty, TyCtxt};
-use middle::ty::fold::TypeFolder;
+use rustc::ty::subst::{self, Substs};
+use rustc::ty::FnSig;
+use rustc::ty::{self, Ty, TyCtxt};
+use rustc::ty::fold::TypeFolder;
 use {CrateCtxt, require_same_types};
 
 use std::collections::{HashMap};
diff --git a/src/librustc_typeck/check/method/confirm.rs b/src/librustc_typeck/check/method/confirm.rs
index b8c1d43b7c4..310245f0a0e 100644
--- a/src/librustc_typeck/check/method/confirm.rs
+++ b/src/librustc_typeck/check/method/confirm.rs
@@ -13,13 +13,13 @@ use super::probe;
 use check::{self, FnCtxt, callee, demand};
 use check::UnresolvedTypeAction;
 use middle::def_id::DefId;
-use middle::ty::subst::{self};
-use middle::traits;
-use middle::ty::{self, NoPreference, PreferMutLvalue, Ty, TyCtxt};
-use middle::ty::adjustment::{AdjustDerefRef, AutoDerefRef, AutoPtr};
-use middle::ty::fold::TypeFoldable;
-use middle::infer;
-use middle::infer::{InferCtxt, TypeOrigin};
+use rustc::ty::subst::{self};
+use rustc::traits;
+use rustc::ty::{self, NoPreference, PreferMutLvalue, Ty, TyCtxt};
+use rustc::ty::adjustment::{AdjustDerefRef, AutoDerefRef, AutoPtr};
+use rustc::ty::fold::TypeFoldable;
+use rustc::infer;
+use rustc::infer::{InferCtxt, TypeOrigin};
 use syntax::codemap::Span;
 use rustc_front::hir;
 
diff --git a/src/librustc_typeck/check/method/mod.rs b/src/librustc_typeck/check/method/mod.rs
index 6648236f33a..11f7feba86b 100644
--- a/src/librustc_typeck/check/method/mod.rs
+++ b/src/librustc_typeck/check/method/mod.rs
@@ -14,11 +14,11 @@ use astconv::AstConv;
 use check::FnCtxt;
 use middle::def::Def;
 use middle::def_id::DefId;
-use middle::ty::subst;
-use middle::traits;
-use middle::ty::{self, TyCtxt, ToPredicate, ToPolyTraitRef, TraitRef, TypeFoldable};
-use middle::ty::adjustment::{AdjustDerefRef, AutoDerefRef, AutoPtr};
-use middle::infer;
+use rustc::ty::subst;
+use rustc::traits;
+use rustc::ty::{self, TyCtxt, ToPredicate, ToPolyTraitRef, TraitRef, TypeFoldable};
+use rustc::ty::adjustment::{AdjustDerefRef, AutoDerefRef, AutoPtr};
+use rustc::infer;
 
 use syntax::ast;
 use syntax::codemap::Span;
diff --git a/src/librustc_typeck/check/method/probe.rs b/src/librustc_typeck/check/method/probe.rs
index 6be822aebca..4b42846297b 100644
--- a/src/librustc_typeck/check/method/probe.rs
+++ b/src/librustc_typeck/check/method/probe.rs
@@ -16,12 +16,12 @@ use super::suggest;
 use check;
 use check::{FnCtxt, UnresolvedTypeAction};
 use middle::def_id::DefId;
-use middle::ty::subst;
-use middle::ty::subst::Subst;
-use middle::traits;
-use middle::ty::{self, NoPreference, Ty, TyCtxt, ToPolyTraitRef, TraitRef, TypeFoldable};
-use middle::infer;
-use middle::infer::{InferCtxt, TypeOrigin};
+use rustc::ty::subst;
+use rustc::ty::subst::Subst;
+use rustc::traits;
+use rustc::ty::{self, NoPreference, Ty, TyCtxt, ToPolyTraitRef, TraitRef, TypeFoldable};
+use rustc::infer;
+use rustc::infer::{InferCtxt, TypeOrigin};
 use syntax::ast;
 use syntax::codemap::{Span, DUMMY_SP};
 use rustc_front::hir;
diff --git a/src/librustc_typeck/check/method/suggest.rs b/src/librustc_typeck/check/method/suggest.rs
index b940c073a7f..aae7912cace 100644
--- a/src/librustc_typeck/check/method/suggest.rs
+++ b/src/librustc_typeck/check/method/suggest.rs
@@ -16,13 +16,13 @@ use CrateCtxt;
 use astconv::AstConv;
 use check::{self, FnCtxt};
 use front::map as hir_map;
-use middle::ty::{self, Ty, ToPolyTraitRef, ToPredicate, TypeFoldable};
+use rustc::ty::{self, Ty, ToPolyTraitRef, ToPredicate, TypeFoldable};
 use middle::cstore::{self, CrateStore};
 use middle::def::Def;
 use middle::def_id::DefId;
 use middle::lang_items::FnOnceTraitLangItem;
-use middle::ty::subst::Substs;
-use middle::traits::{Obligation, SelectionContext};
+use rustc::ty::subst::Substs;
+use rustc::traits::{Obligation, SelectionContext};
 use util::nodemap::{FnvHashSet};
 
 
diff --git a/src/librustc_typeck/check/mod.rs b/src/librustc_typeck/check/mod.rs
index 8d025e16422..c5a0657594e 100644
--- a/src/librustc_typeck/check/mod.rs
+++ b/src/librustc_typeck/check/mod.rs
@@ -88,21 +88,21 @@ use middle::astconv_util::prohibit_type_params;
 use middle::cstore::LOCAL_CRATE;
 use middle::def::{self, Def};
 use middle::def_id::DefId;
-use middle::infer;
-use middle::infer::{TypeOrigin, TypeTrace, type_variable};
+use rustc::infer;
+use rustc::infer::{TypeOrigin, TypeTrace, type_variable};
 use middle::pat_util::{self, pat_id_map};
-use middle::ty::subst::{self, Subst, Substs, VecPerParamSpace, ParamSpace};
-use middle::traits::{self, report_fulfillment_errors, ProjectionMode};
-use middle::ty::{GenericPredicates, TypeScheme};
-use middle::ty::{ParamTy, ParameterEnvironment};
-use middle::ty::{LvaluePreference, NoPreference, PreferMutLvalue};
-use middle::ty::{self, ToPolyTraitRef, Ty, TyCtxt};
-use middle::ty::{MethodCall, MethodCallee};
-use middle::ty::adjustment;
-use middle::ty::error::TypeError;
-use middle::ty::fold::{TypeFolder, TypeFoldable};
-use middle::ty::relate::TypeRelation;
-use middle::ty::util::{Representability, IntTypeExt};
+use rustc::ty::subst::{self, Subst, Substs, VecPerParamSpace, ParamSpace};
+use rustc::traits::{self, report_fulfillment_errors, ProjectionMode};
+use rustc::ty::{GenericPredicates, TypeScheme};
+use rustc::ty::{ParamTy, ParameterEnvironment};
+use rustc::ty::{LvaluePreference, NoPreference, PreferMutLvalue};
+use rustc::ty::{self, ToPolyTraitRef, Ty, TyCtxt};
+use rustc::ty::{MethodCall, MethodCallee};
+use rustc::ty::adjustment;
+use rustc::ty::error::TypeError;
+use rustc::ty::fold::{TypeFolder, TypeFoldable};
+use rustc::ty::relate::TypeRelation;
+use rustc::ty::util::{Representability, IntTypeExt};
 use require_c_abi_if_variadic;
 use rscope::{ElisionFailureInfo, RegionScope};
 use session::{Session, CompileResult};
@@ -1769,8 +1769,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
     /// Apply "fallbacks" to some types
     /// ! gets replaced with (), unconstrained ints with i32, and unconstrained floats with f64.
     fn default_type_parameters(&self) {
-        use middle::ty::error::UnconstrainedNumeric::Neither;
-        use middle::ty::error::UnconstrainedNumeric::{UnconstrainedInt, UnconstrainedFloat};
+        use rustc::ty::error::UnconstrainedNumeric::Neither;
+        use rustc::ty::error::UnconstrainedNumeric::{UnconstrainedInt, UnconstrainedFloat};
         for ty in &self.infcx().unsolved_variables() {
             let resolved = self.infcx().resolve_type_vars_if_possible(ty);
             if self.infcx().type_var_diverges(resolved) {
@@ -1805,8 +1805,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
     }
 
     fn new_select_all_obligations_and_apply_defaults(&self) {
-        use middle::ty::error::UnconstrainedNumeric::Neither;
-        use middle::ty::error::UnconstrainedNumeric::{UnconstrainedInt, UnconstrainedFloat};
+        use rustc::ty::error::UnconstrainedNumeric::Neither;
+        use rustc::ty::error::UnconstrainedNumeric::{UnconstrainedInt, UnconstrainedFloat};
 
         // For the time being this errs on the side of being memory wasteful but provides better
         // error reporting.
@@ -1978,8 +1978,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
                                 default_map: &FnvHashMap<&Ty<'tcx>, type_variable::Default<'tcx>>,
                                 conflict: Ty<'tcx>)
                                 -> Option<type_variable::Default<'tcx>> {
-        use middle::ty::error::UnconstrainedNumeric::Neither;
-        use middle::ty::error::UnconstrainedNumeric::{UnconstrainedInt, UnconstrainedFloat};
+        use rustc::ty::error::UnconstrainedNumeric::Neither;
+        use rustc::ty::error::UnconstrainedNumeric::{UnconstrainedInt, UnconstrainedFloat};
 
         // Ensure that we apply the conflicting default first
         let mut unbound_tyvars = Vec::with_capacity(unbound_vars.len() + 1);
diff --git a/src/librustc_typeck/check/op.rs b/src/librustc_typeck/check/op.rs
index f4841b75d13..281564af615 100644
--- a/src/librustc_typeck/check/op.rs
+++ b/src/librustc_typeck/check/op.rs
@@ -19,7 +19,7 @@ use super::{
     FnCtxt,
 };
 use middle::def_id::DefId;
-use middle::ty::{Ty, TypeFoldable, PreferMutLvalue};
+use rustc::ty::{Ty, TypeFoldable, PreferMutLvalue};
 use syntax::ast;
 use syntax::parse::token;
 use rustc_front::hir;
@@ -335,7 +335,7 @@ fn lookup_op_method<'a, 'tcx>(fcx: &'a FnCtxt<'a, 'tcx>,
             let method_ty = method.ty;
 
             // HACK(eddyb) Fully qualified path to work around a resolve bug.
-            let method_call = ::middle::ty::MethodCall::expr(expr.id);
+            let method_call = ::rustc::ty::MethodCall::expr(expr.id);
             fcx.inh.tables.borrow_mut().method_map.insert(method_call, method);
 
             // extract return type for method; all late bound regions
diff --git a/src/librustc_typeck/check/regionck.rs b/src/librustc_typeck/check/regionck.rs
index afbe511dda8..533d24686e7 100644
--- a/src/librustc_typeck/check/regionck.rs
+++ b/src/librustc_typeck/check/regionck.rs
@@ -89,13 +89,13 @@ use middle::free_region::FreeRegionMap;
 use middle::mem_categorization as mc;
 use middle::mem_categorization::Categorization;
 use middle::region::{self, CodeExtent};
-use middle::ty::subst::Substs;
-use middle::traits;
-use middle::ty::{self, Ty, TyCtxt, MethodCall, TypeFoldable};
-use middle::infer::{self, GenericKind, InferCtxt, SubregionOrigin, TypeOrigin, VerifyBound};
+use rustc::ty::subst::Substs;
+use rustc::traits;
+use rustc::ty::{self, Ty, TyCtxt, MethodCall, TypeFoldable};
+use rustc::infer::{self, GenericKind, InferCtxt, SubregionOrigin, TypeOrigin, VerifyBound};
 use middle::pat_util;
-use middle::ty::adjustment;
-use middle::ty::wf::ImpliedBound;
+use rustc::ty::adjustment;
+use rustc::ty::wf::ImpliedBound;
 
 use std::mem;
 use syntax::ast;
diff --git a/src/librustc_typeck/check/upvar.rs b/src/librustc_typeck/check/upvar.rs
index 2bb8c874d20..69e49e6a986 100644
--- a/src/librustc_typeck/check/upvar.rs
+++ b/src/librustc_typeck/check/upvar.rs
@@ -46,8 +46,8 @@ use check::demand;
 use middle::expr_use_visitor as euv;
 use middle::mem_categorization as mc;
 use middle::mem_categorization::Categorization;
-use middle::ty::{self, Ty, TyCtxt};
-use middle::infer::{InferCtxt, UpvarRegion};
+use rustc::ty::{self, Ty, TyCtxt};
+use rustc::infer::{InferCtxt, UpvarRegion};
 use std::collections::HashSet;
 use syntax::ast;
 use syntax::codemap::Span;
diff --git a/src/librustc_typeck/check/wfcheck.rs b/src/librustc_typeck/check/wfcheck.rs
index af33b6b394e..047dfec1796 100644
--- a/src/librustc_typeck/check/wfcheck.rs
+++ b/src/librustc_typeck/check/wfcheck.rs
@@ -14,10 +14,10 @@ use constrained_type_params::{identify_constrained_type_params, Parameter};
 use CrateCtxt;
 use middle::def_id::DefId;
 use middle::region::{CodeExtent};
-use middle::ty::subst::{self, TypeSpace, FnSpace, ParamSpace, SelfSpace};
-use middle::traits;
-use middle::ty::{self, Ty, TyCtxt};
-use middle::ty::fold::{TypeFolder};
+use rustc::ty::subst::{self, TypeSpace, FnSpace, ParamSpace, SelfSpace};
+use rustc::traits;
+use rustc::ty::{self, Ty, TyCtxt};
+use rustc::ty::fold::{TypeFolder};
 
 use std::cell::RefCell;
 use std::collections::HashSet;
diff --git a/src/librustc_typeck/check/writeback.rs b/src/librustc_typeck/check/writeback.rs
index 20c86f9a17c..7ede85454e9 100644
--- a/src/librustc_typeck/check/writeback.rs
+++ b/src/librustc_typeck/check/writeback.rs
@@ -17,10 +17,10 @@ use astconv::AstConv;
 use check::FnCtxt;
 use middle::def_id::DefId;
 use middle::pat_util;
-use middle::ty::{self, Ty, TyCtxt, MethodCall, MethodCallee};
-use middle::ty::adjustment;
-use middle::ty::fold::{TypeFolder,TypeFoldable};
-use middle::infer;
+use rustc::ty::{self, Ty, TyCtxt, MethodCall, MethodCallee};
+use rustc::ty::adjustment;
+use rustc::ty::fold::{TypeFolder,TypeFoldable};
+use rustc::infer;
 use write_substs_to_tcx;
 use write_ty_to_tcx;
 
diff --git a/src/librustc_typeck/coherence/mod.rs b/src/librustc_typeck/coherence/mod.rs
index af497509105..c3b46ef83ac 100644
--- a/src/librustc_typeck/coherence/mod.rs
+++ b/src/librustc_typeck/coherence/mod.rs
@@ -17,21 +17,21 @@
 
 use middle::def_id::DefId;
 use middle::lang_items::UnsizeTraitLangItem;
-use middle::ty::subst::{self, Subst};
-use middle::ty::{self, TyCtxt, TypeFoldable};
-use middle::traits::{self, ProjectionMode};
-use middle::ty::{ImplOrTraitItemId, ConstTraitItemId};
-use middle::ty::{MethodTraitItemId, TypeTraitItemId, ParameterEnvironment};
-use middle::ty::{Ty, TyBool, TyChar, TyEnum, TyError};
-use middle::ty::{TyParam, TyRawPtr};
-use middle::ty::{TyRef, TyStruct, TyTrait, TyTuple};
-use middle::ty::{TyStr, TyArray, TySlice, TyFloat, TyInfer, TyInt};
-use middle::ty::{TyUint, TyClosure, TyBox, TyFnDef, TyFnPtr};
-use middle::ty::TyProjection;
-use middle::ty::util::CopyImplementationError;
+use rustc::ty::subst::{self, Subst};
+use rustc::ty::{self, TyCtxt, TypeFoldable};
+use rustc::traits::{self, ProjectionMode};
+use rustc::ty::{ImplOrTraitItemId, ConstTraitItemId};
+use rustc::ty::{MethodTraitItemId, TypeTraitItemId, ParameterEnvironment};
+use rustc::ty::{Ty, TyBool, TyChar, TyEnum, TyError};
+use rustc::ty::{TyParam, TyRawPtr};
+use rustc::ty::{TyRef, TyStruct, TyTrait, TyTuple};
+use rustc::ty::{TyStr, TyArray, TySlice, TyFloat, TyInfer, TyInt};
+use rustc::ty::{TyUint, TyClosure, TyBox, TyFnDef, TyFnPtr};
+use rustc::ty::TyProjection;
+use rustc::ty::util::CopyImplementationError;
 use middle::free_region::FreeRegionMap;
 use CrateCtxt;
-use middle::infer::{self, InferCtxt, TypeOrigin, new_infer_ctxt};
+use rustc::infer::{self, InferCtxt, TypeOrigin, new_infer_ctxt};
 use std::cell::RefCell;
 use std::rc::Rc;
 use syntax::ast;
diff --git a/src/librustc_typeck/coherence/orphan.rs b/src/librustc_typeck/coherence/orphan.rs
index 56e6d039903..eba3e56c722 100644
--- a/src/librustc_typeck/coherence/orphan.rs
+++ b/src/librustc_typeck/coherence/orphan.rs
@@ -13,8 +13,8 @@
 
 use middle::cstore::LOCAL_CRATE;
 use middle::def_id::DefId;
-use middle::traits;
-use middle::ty::{self, TyCtxt};
+use rustc::traits;
+use rustc::ty::{self, TyCtxt};
 use syntax::ast;
 use syntax::codemap::Span;
 use rustc::dep_graph::DepNode;
diff --git a/src/librustc_typeck/coherence/overlap.rs b/src/librustc_typeck/coherence/overlap.rs
index 78ae8fa65f8..d7d4560a4ea 100644
--- a/src/librustc_typeck/coherence/overlap.rs
+++ b/src/librustc_typeck/coherence/overlap.rs
@@ -14,9 +14,9 @@
 
 use middle::cstore::CrateStore;
 use middle::def_id::DefId;
-use middle::traits::{self, ProjectionMode};
-use middle::infer;
-use middle::ty::{self, TyCtxt};
+use rustc::traits::{self, ProjectionMode};
+use rustc::infer;
+use rustc::ty::{self, TyCtxt};
 use syntax::ast;
 use rustc::dep_graph::DepNode;
 use rustc_front::hir;
diff --git a/src/librustc_typeck/coherence/unsafety.rs b/src/librustc_typeck/coherence/unsafety.rs
index fbb1653b06a..6d77200daa3 100644
--- a/src/librustc_typeck/coherence/unsafety.rs
+++ b/src/librustc_typeck/coherence/unsafety.rs
@@ -11,7 +11,7 @@
 //! Unsafety checker: every impl either implements a trait defined in this
 //! crate or pertains to a type defined in this crate.
 
-use middle::ty::TyCtxt;
+use rustc::ty::TyCtxt;
 use rustc_front::intravisit;
 use rustc_front::hir;
 
diff --git a/src/librustc_typeck/collect.rs b/src/librustc_typeck/collect.rs
index a282165d1a0..0b447b2009b 100644
--- a/src/librustc_typeck/collect.rs
+++ b/src/librustc_typeck/collect.rs
@@ -68,12 +68,12 @@ use middle::lang_items::SizedTraitLangItem;
 use middle::resolve_lifetime;
 use middle::const_eval::{self, ConstVal};
 use middle::const_eval::EvalHint::UncheckedExprHint;
-use middle::ty::subst::{Substs, FnSpace, ParamSpace, SelfSpace, TypeSpace, VecPerParamSpace};
-use middle::ty::{ToPredicate, ImplContainer, ImplOrTraitItemContainer, TraitContainer};
-use middle::ty::{self, ToPolyTraitRef, Ty, TyCtxt, TypeScheme};
-use middle::ty::{VariantKind};
-use middle::ty::fold::{TypeFolder};
-use middle::ty::util::IntTypeExt;
+use rustc::ty::subst::{Substs, FnSpace, ParamSpace, SelfSpace, TypeSpace, VecPerParamSpace};
+use rustc::ty::{ToPredicate, ImplContainer, ImplOrTraitItemContainer, TraitContainer};
+use rustc::ty::{self, ToPolyTraitRef, Ty, TyCtxt, TypeScheme};
+use rustc::ty::{VariantKind};
+use rustc::ty::fold::{TypeFolder};
+use rustc::ty::util::IntTypeExt;
 use rscope::*;
 use rustc::dep_graph::DepNode;
 use rustc::front::map as hir_map;
diff --git a/src/librustc_typeck/constrained_type_params.rs b/src/librustc_typeck/constrained_type_params.rs
index 016ff3b5a06..7e8b08c5853 100644
--- a/src/librustc_typeck/constrained_type_params.rs
+++ b/src/librustc_typeck/constrained_type_params.rs
@@ -8,8 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use middle::ty::subst;
-use middle::ty::{self, Ty, TyCtxt};
+use rustc::ty::subst;
+use rustc::ty::{self, Ty, TyCtxt};
 
 use std::collections::HashSet;
 
diff --git a/src/librustc_typeck/lib.rs b/src/librustc_typeck/lib.rs
index ccc79b0748c..9b0fdd8a2e3 100644
--- a/src/librustc_typeck/lib.rs
+++ b/src/librustc_typeck/lib.rs
@@ -104,10 +104,10 @@ pub use rustc::util;
 use dep_graph::DepNode;
 use front::map as hir_map;
 use middle::def::Def;
-use middle::infer::{self, TypeOrigin};
-use middle::ty::subst::Substs;
-use middle::ty::{self, Ty, TyCtxt, TypeFoldable};
-use middle::traits::ProjectionMode;
+use rustc::infer::{self, TypeOrigin};
+use rustc::ty::subst::Substs;
+use rustc::ty::{self, Ty, TyCtxt, TypeFoldable};
+use rustc::traits::ProjectionMode;
 use session::{config, CompileResult};
 use util::common::time;
 use rustc_front::hir;
diff --git a/src/librustc_typeck/rscope.rs b/src/librustc_typeck/rscope.rs
index 1b02c736dce..793dba1e3f5 100644
--- a/src/librustc_typeck/rscope.rs
+++ b/src/librustc_typeck/rscope.rs
@@ -9,7 +9,7 @@
 // except according to those terms.
 
 
-use middle::ty;
+use rustc::ty;
 
 use std::cell::Cell;
 use syntax::codemap::Span;
diff --git a/src/librustc_typeck/variance/constraints.rs b/src/librustc_typeck/variance/constraints.rs
index f46edb03b95..1ed355c90a5 100644
--- a/src/librustc_typeck/variance/constraints.rs
+++ b/src/librustc_typeck/variance/constraints.rs
@@ -16,10 +16,10 @@
 use dep_graph::DepTrackingMapConfig;
 use middle::def_id::DefId;
 use middle::resolve_lifetime as rl;
-use middle::ty::subst;
-use middle::ty::subst::ParamSpace;
-use middle::ty::{self, Ty, TyCtxt};
-use middle::ty::maps::ItemVariances;
+use rustc::ty::subst;
+use rustc::ty::subst::ParamSpace;
+use rustc::ty::{self, Ty, TyCtxt};
+use rustc::ty::maps::ItemVariances;
 use rustc::front::map as hir_map;
 use syntax::ast;
 use rustc_front::hir;
diff --git a/src/librustc_typeck/variance/mod.rs b/src/librustc_typeck/variance/mod.rs
index ab37ef952c9..ee9f317f20f 100644
--- a/src/librustc_typeck/variance/mod.rs
+++ b/src/librustc_typeck/variance/mod.rs
@@ -12,7 +12,7 @@
 //! parameters. See README.md for details.
 
 use arena;
-use middle::ty::TyCtxt;
+use rustc::ty::TyCtxt;
 
 /// Defines the `TermsContext` basically houses an arena where we can
 /// allocate terms.
diff --git a/src/librustc_typeck/variance/solve.rs b/src/librustc_typeck/variance/solve.rs
index c5e925226d0..0763cfd7e2e 100644
--- a/src/librustc_typeck/variance/solve.rs
+++ b/src/librustc_typeck/variance/solve.rs
@@ -15,8 +15,8 @@
 //! optimal solution to the constraints. The final variance for each
 //! inferred is then written into the `variance_map` in the tcx.
 
-use middle::ty::subst::VecPerParamSpace;
-use middle::ty;
+use rustc::ty::subst::VecPerParamSpace;
+use rustc::ty;
 use std::rc::Rc;
 
 use super::constraints::*;
diff --git a/src/librustc_typeck/variance/terms.rs b/src/librustc_typeck/variance/terms.rs
index 7148afb5e85..c6f82ba42e6 100644
--- a/src/librustc_typeck/variance/terms.rs
+++ b/src/librustc_typeck/variance/terms.rs
@@ -21,9 +21,9 @@
 
 use arena::TypedArena;
 use dep_graph::DepTrackingMapConfig;
-use middle::ty::subst::{ParamSpace, FnSpace, TypeSpace, SelfSpace, VecPerParamSpace};
-use middle::ty::{self, TyCtxt};
-use middle::ty::maps::ItemVariances;
+use rustc::ty::subst::{ParamSpace, FnSpace, TypeSpace, SelfSpace, VecPerParamSpace};
+use rustc::ty::{self, TyCtxt};
+use rustc::ty::maps::ItemVariances;
 use std::fmt;
 use std::rc::Rc;
 use syntax::ast;
diff --git a/src/librustc_typeck/variance/xform.rs b/src/librustc_typeck/variance/xform.rs
index 2749dce5c73..02a2ceb360d 100644
--- a/src/librustc_typeck/variance/xform.rs
+++ b/src/librustc_typeck/variance/xform.rs
@@ -8,7 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
-use middle::ty;
+use rustc::ty;
 
 pub trait Xform {
     fn xform(self, v: Self) -> Self;
diff --git a/src/librustdoc/clean/inline.rs b/src/librustdoc/clean/inline.rs
index 75bf1036fa2..94dead3c005 100644
--- a/src/librustdoc/clean/inline.rs
+++ b/src/librustdoc/clean/inline.rs
@@ -19,8 +19,8 @@ use rustc_front::hir;
 use rustc::middle::cstore::{self, CrateStore};
 use rustc::middle::def::Def;
 use rustc::middle::def_id::DefId;
-use rustc::middle::ty::{self, TyCtxt};
-use rustc::middle::ty::subst;
+use rustc::ty::{self, TyCtxt};
+use rustc::ty::subst;
 use rustc::middle::stability;
 use rustc::middle::const_eval;
 
diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs
index 17fde1c7b33..e56286c8bed 100644
--- a/src/librustdoc/clean/mod.rs
+++ b/src/librustdoc/clean/mod.rs
@@ -38,8 +38,8 @@ use rustc_trans::back::link;
 use rustc::middle::cstore::{self, CrateStore};
 use rustc::middle::def::Def;
 use rustc::middle::def_id::{DefId, DefIndex};
-use rustc::middle::ty::subst::{self, ParamSpace, VecPerParamSpace};
-use rustc::middle::ty;
+use rustc::ty::subst::{self, ParamSpace, VecPerParamSpace};
+use rustc::ty;
 use rustc::middle::stability;
 
 use rustc_front::hir;
@@ -831,7 +831,7 @@ impl Clean<WherePredicate> for hir::WherePredicate {
 
 impl<'a> Clean<WherePredicate> for ty::Predicate<'a> {
     fn clean(&self, cx: &DocContext) -> WherePredicate {
-        use rustc::middle::ty::Predicate;
+        use rustc::ty::Predicate;
 
         match *self {
             Predicate::Trait(ref pred) => pred.clean(cx),
diff --git a/src/librustdoc/clean/simplify.rs b/src/librustdoc/clean/simplify.rs
index 4cce8358992..e6a4d882c04 100644
--- a/src/librustdoc/clean/simplify.rs
+++ b/src/librustdoc/clean/simplify.rs
@@ -11,7 +11,7 @@
 //! Simplification of where clauses and parameter bounds into a prettier and
 //! more canonical form.
 //!
-//! Currently all cross-crate-inlined function use `middle::ty` to reconstruct
+//! Currently all cross-crate-inlined function use `rustc::ty` to reconstruct
 //! the AST (e.g. see all of `clean::inline`), but this is not always a
 //! non-lossy transformation. The current format of storage for where clauses
 //! for functions and such is simply a list of predicates. One example of this
@@ -30,7 +30,7 @@ use std::mem;
 use std::collections::HashMap;
 
 use rustc::middle::def_id::DefId;
-use rustc::middle::ty::subst;
+use rustc::ty::subst;
 
 use clean::PathParameters as PP;
 use clean::WherePredicate as WP;
diff --git a/src/librustdoc/core.rs b/src/librustdoc/core.rs
index c30fd39616c..15a10a84e43 100644
--- a/src/librustdoc/core.rs
+++ b/src/librustdoc/core.rs
@@ -15,7 +15,7 @@ use rustc::dep_graph::DepGraph;
 use rustc::session::{self, config};
 use rustc::middle::def_id::DefId;
 use rustc::middle::privacy::AccessLevels;
-use rustc::middle::ty::{self, TyCtxt};
+use rustc::ty::{self, TyCtxt};
 use rustc::front::map as hir_map;
 use rustc::lint;
 use rustc_trans::back::link;
diff --git a/src/test/auxiliary/dummy_mir_pass.rs b/src/test/auxiliary/dummy_mir_pass.rs
index fdfbc98b007..3e1b46522a9 100644
--- a/src/test/auxiliary/dummy_mir_pass.rs
+++ b/src/test/auxiliary/dummy_mir_pass.rs
@@ -22,7 +22,7 @@ extern crate syntax;
 use rustc::mir::transform::{self, MirPass};
 use rustc::mir::repr::{Mir, Literal};
 use rustc::mir::visit::MutVisitor;
-use rustc::middle::ty;
+use rustc::ty;
 use rustc::middle::const_eval::ConstVal;
 use rustc_const_eval::ConstInt;
 use rustc_plugin::Registry;
diff --git a/src/test/compile-fail/moves-based-on-type-cyclic-types-issue-4821.rs b/src/test/compile-fail/moves-based-on-type-cyclic-types-issue-4821.rs
index 865784c2f1e..0c4aae8cfad 100644
--- a/src/test/compile-fail/moves-based-on-type-cyclic-types-issue-4821.rs
+++ b/src/test/compile-fail/moves-based-on-type-cyclic-types-issue-4821.rs
@@ -10,7 +10,7 @@
 
 // Test for a subtle failure computing kinds of cyclic types, in which
 // temporary kinds wound up being stored in a cache and used later.
-// See middle::ty::type_contents() for more information.
+// See rustc::ty::type_contents() for more information.
 
 
 struct List { key: isize, next: Option<Box<List>> }
diff --git a/src/test/run-make/execution-engine/test.rs b/src/test/run-make/execution-engine/test.rs
index 4ff531d4755..7454bbfb531 100644
--- a/src/test/run-make/execution-engine/test.rs
+++ b/src/test/run-make/execution-engine/test.rs
@@ -30,7 +30,7 @@ use rustc::dep_graph::DepGraph;
 use rustc::front::map as ast_map;
 use rustc::llvm;
 use rustc::middle::cstore::{CrateStore, LinkagePreference};
-use rustc::middle::ty;
+use rustc::ty;
 use rustc::session::config::{self, basic_options, build_configuration, Input, Options};
 use rustc::session::build_session;
 use rustc_driver::{driver, abort_on_err};