diff --git a/src/libextra/dlist.rs b/src/libextra/dlist.rs
index c91f9326644ff..85def62dc3b55 100644
--- a/src/libextra/dlist.rs
+++ b/src/libextra/dlist.rs
@@ -625,43 +625,43 @@ impl<A: Clone> Clone for DList<A> {
 }
 
 #[cfg(test)]
-pub fn check_links<T>(list: &DList<T>) {
-    let mut len = 0u;
-    let mut last_ptr: Option<&Node<T>> = None;
-    let mut node_ptr: &Node<T>;
-    match list.list_head {
-        None => { assert_eq!(0u, list.length); return }
-        Some(ref node) => node_ptr = &**node,
-    }
-    loop {
-        match (last_ptr, node_ptr.prev.resolve_immut()) {
-            (None   , None      ) => {}
-            (None   , _         ) => fail!("prev link for list_head"),
-            (Some(p), Some(pptr)) => {
-                assert_eq!(p as *Node<T>, pptr as *Node<T>);
-            }
-            _ => fail!("prev link is none, not good"),
+mod tests {
+    use container::Deque;
+    use extra::test;
+    use std::rand;
+    use super::{DList, Node, ListInsertion};
+
+    pub fn check_links<T>(list: &DList<T>) {
+        let mut len = 0u;
+        let mut last_ptr: Option<&Node<T>> = None;
+        let mut node_ptr: &Node<T>;
+        match list.list_head {
+            None => { assert_eq!(0u, list.length); return }
+            Some(ref node) => node_ptr = &**node,
         }
-        match node_ptr.next {
-            Some(ref next) => {
-                last_ptr = Some(node_ptr);
-                node_ptr = &**next;
-                len += 1;
+        loop {
+            match (last_ptr, node_ptr.prev.resolve_immut()) {
+                (None   , None      ) => {}
+                (None   , _         ) => fail!("prev link for list_head"),
+                (Some(p), Some(pptr)) => {
+                    assert_eq!(p as *Node<T>, pptr as *Node<T>);
+                }
+                _ => fail!("prev link is none, not good"),
             }
-            None => {
-                len += 1;
-                break;
+            match node_ptr.next {
+                Some(ref next) => {
+                    last_ptr = Some(node_ptr);
+                    node_ptr = &**next;
+                    len += 1;
+                }
+                None => {
+                    len += 1;
+                    break;
+                }
             }
         }
+        assert_eq!(len, list.length);
     }
-    assert_eq!(len, list.length);
-}
-
-#[cfg(test)]
-mod tests {
-    use super::*;
-    use std::rand;
-    use extra::test;
 
     #[test]
     fn test_basic() {
diff --git a/src/libextra/json.rs b/src/libextra/json.rs
index aa2cc9c855e3c..748d751a2df41 100644
--- a/src/libextra/json.rs
+++ b/src/libextra/json.rs
@@ -1333,11 +1333,10 @@ impl to_str::ToStr for Error {
 
 #[cfg(test)]
 mod tests {
-
     use super::*;
 
     use std::io;
-    use serialize::Decodable;
+    use serialize::{Encodable, Decodable};
     use treemap::TreeMap;
 
     #[deriving(Eq, Encodable, Decodable)]
diff --git a/src/libextra/lib.rs b/src/libextra/lib.rs
index b644f53b2c257..44b01caac26bc 100644
--- a/src/libextra/lib.rs
+++ b/src/libextra/lib.rs
@@ -34,10 +34,6 @@ Rust extras are part of the standard Rust distribution.
 #[deny(non_camel_case_types)];
 #[deny(missing_doc)];
 
-use std::str::{StrSlice, OwnedStr};
-
-pub use std::os;
-
 // Utility modules
 
 pub mod c_vec;
@@ -108,12 +104,4 @@ pub mod serialize;
 pub mod extra {
     pub use serialize;
     pub use test;
-
-    // For bootstrapping.
-    pub use std::clone;
-    pub use std::condition;
-    pub use std::cmp;
-    pub use std::unstable;
-    pub use std::str;
-    pub use std::os;
 }
diff --git a/src/libextra/num/bigint.rs b/src/libextra/num/bigint.rs
index 2d87c6b0073e2..ed731298b52a5 100644
--- a/src/libextra/num/bigint.rs
+++ b/src/libextra/num/bigint.rs
@@ -1434,6 +1434,7 @@ impl BigInt {
 #[cfg(test)]
 mod biguint_tests {
     use super::*;
+    use super::RandBigInt;
 
     use std::cmp::{Less, Equal, Greater};
     use std::i64;
@@ -2090,6 +2091,7 @@ mod biguint_tests {
 #[cfg(test)]
 mod bigint_tests {
     use super::*;
+    use super::RandBigInt;
 
     use std::cmp::{Less, Equal, Greater};
     use std::i64;
diff --git a/src/libextra/ringbuf.rs b/src/libextra/ringbuf.rs
index 19e293c94a219..da49f2372f467 100644
--- a/src/libextra/ringbuf.rs
+++ b/src/libextra/ringbuf.rs
@@ -404,10 +404,11 @@ impl<A> Extendable<A> for RingBuf<A> {
 
 #[cfg(test)]
 mod tests {
-    use super::*;
+    use container::Deque;
+    use extra::test;
     use std::clone::Clone;
     use std::cmp::Eq;
-    use extra::test;
+    use super::RingBuf;
 
     #[test]
     fn test_simple() {
diff --git a/src/libextra/stats.rs b/src/libextra/stats.rs
index 5f3700fec0790..f95c12904ff4f 100644
--- a/src/libextra/stats.rs
+++ b/src/libextra/stats.rs
@@ -432,7 +432,6 @@ pub fn freq_count<T: Iterator<U>, U: Eq+Hash>(mut iter: T) -> hashmap::HashMap<U
 
 #[cfg(test)]
 mod tests {
-
     use stats::Stats;
     use stats::Summary;
     use stats::write_5_number_summary;
@@ -1018,6 +1017,7 @@ mod tests {
 mod bench {
     use extra::test::BenchHarness;
     use std::vec;
+    use stats::Stats;
 
     #[bench]
     fn sum_three_items(bh: &mut BenchHarness) {
diff --git a/src/librustc/driver/driver.rs b/src/librustc/driver/driver.rs
index 0fccf50e009f4..7f56fcf8e7157 100644
--- a/src/librustc/driver/driver.rs
+++ b/src/librustc/driver/driver.rs
@@ -1131,6 +1131,7 @@ mod test {
 
     use extra::getopts::groups::getopts;
     use syntax::attr;
+    use syntax::attr::AttrMetaMethods;
     use syntax::diagnostic;
 
     // When the user supplies --test we should implicitly supply --cfg test
diff --git a/src/librustc/middle/borrowck/gather_loans/lifetime.rs b/src/librustc/middle/borrowck/gather_loans/lifetime.rs
index 9a56ec52cce28..a7f75b9dcc109 100644
--- a/src/librustc/middle/borrowck/gather_loans/lifetime.rs
+++ b/src/librustc/middle/borrowck/gather_loans/lifetime.rs
@@ -16,6 +16,7 @@
 use middle::borrowck::*;
 use mc = middle::mem_categorization;
 use middle::ty;
+use util::ppaux::Repr;
 use syntax::ast;
 use syntax::codemap::Span;
 
diff --git a/src/librustc/middle/resolve.rs b/src/librustc/middle/resolve.rs
index fb0bdfe963e0f..e4d816b91bd25 100644
--- a/src/librustc/middle/resolve.rs
+++ b/src/librustc/middle/resolve.rs
@@ -5408,8 +5408,7 @@ impl Resolver {
         }
     }
 
-    fn search_for_traits_containing_method(&mut self, name: Ident)
-                                               -> ~[DefId] {
+    fn search_for_traits_containing_method(&mut self, name: Ident) -> ~[DefId] {
         debug!("(searching for traits containing method) looking for '{}'",
                self.session.str_of(name));
 
@@ -5438,71 +5437,41 @@ impl Resolver {
                 self.populate_module_if_necessary(search_module);
 
                 let children = search_module.children.borrow();
-                for (_, &child_name_bindings) in children.get().iter() {
-                    match child_name_bindings.def_for_namespace(TypeNS) {
-                        Some(def) => {
-                            match def {
-                                DefTrait(trait_def_id) => {
-                                    if candidate_traits.contains(&trait_def_id) {
-                                        self.add_trait_info(
-                                            &mut found_traits,
-                                            trait_def_id, name);
-                                    }
-                                }
-                                _ => {
-                                    // Continue.
-                                }
-                            }
-                        }
-                        None => {
-                            // Continue.
-                        }
+                for (_, &child_names) in children.get().iter() {
+                    let def = match child_names.def_for_namespace(TypeNS) {
+                        Some(def) => def,
+                        None => continue
+                    };
+                    let trait_def_id = match def {
+                        DefTrait(trait_def_id) => trait_def_id,
+                        _ => continue,
+                    };
+                    if candidate_traits.contains(&trait_def_id) {
+                        self.add_trait_info(&mut found_traits, trait_def_id,
+                                            name);
                     }
                 }
 
                 // Look for imports.
                 let import_resolutions = search_module.import_resolutions
                                                       .borrow();
-                for (_, &import_resolution) in import_resolutions.get()
-                                                                 .iter() {
-                    match import_resolution.target_for_namespace(TypeNS) {
-                        None => {
-                            // Continue.
-                        }
-                        Some(target) => {
-                            match target.bindings.def_for_namespace(TypeNS) {
-                                Some(def) => {
-                                    match def {
-                                        DefTrait(trait_def_id) => {
-                                            if candidate_traits.contains(&trait_def_id) {
-                                                self.add_trait_info(
-                                                    &mut found_traits,
-                                                    trait_def_id, name);
-                                                self.used_imports.insert(
-                                                    import_resolution.type_id
-                                                                     .get());
-                                            }
-                                        }
-                                        _ => {
-                                            // Continue.
-                                        }
-                                    }
-                                }
-                                None => {
-                                    // Continue.
-                                }
-                            }
-                        }
+                for (_, &import) in import_resolutions.get().iter() {
+                    let target = match import.target_for_namespace(TypeNS) {
+                        None => continue,
+                        Some(target) => target,
+                    };
+                    let did = match target.bindings.def_for_namespace(TypeNS) {
+                        Some(DefTrait(trait_def_id)) => trait_def_id,
+                        Some(..) | None => continue,
+                    };
+                    if candidate_traits.contains(&did) {
+                        self.add_trait_info(&mut found_traits, did, name);
+                        self.used_imports.insert(import.type_id.get());
                     }
                 }
 
-                // Move to the next parent.
                 match search_module.parent_link {
-                    NoParentLink => {
-                        // Done.
-                        break;
-                    }
-                    ModuleParentLink(parent_module, _) |
+                    NoParentLink | ModuleParentLink(..) => break,
                     BlockParentLink(parent_module, _) => {
                         search_module = parent_module;
                     }
diff --git a/src/librustc/middle/typeck/astconv.rs b/src/librustc/middle/typeck/astconv.rs
index 746389c604429..76378d15bae9e 100644
--- a/src/librustc/middle/typeck/astconv.rs
+++ b/src/librustc/middle/typeck/astconv.rs
@@ -57,6 +57,7 @@ use middle::ty;
 use middle::typeck::rscope;
 use middle::typeck::rscope::{RegionScope};
 use middle::typeck::lookup_def_tcx;
+use util::ppaux::Repr;
 
 use std::vec;
 use syntax::abi::AbiSet;
diff --git a/src/librustc/middle/typeck/check/method.rs b/src/librustc/middle/typeck/check/method.rs
index 3bd1f45a07191..9c359f238f820 100644
--- a/src/librustc/middle/typeck/check/method.rs
+++ b/src/librustc/middle/typeck/check/method.rs
@@ -83,6 +83,7 @@ obtained the type `Foo`, we would never match this method.
 use middle::resolve;
 use middle::ty::*;
 use middle::ty;
+use middle::typeck::astconv::AstConv;
 use middle::typeck::check::{FnCtxt, impl_self_ty};
 use middle::typeck::check::{structurally_resolved_type};
 use middle::typeck::check::vtable;
diff --git a/src/librustc/middle/typeck/check/mod.rs b/src/librustc/middle/typeck/check/mod.rs
index 4ebf41b3d4dc1..41757b1a634c5 100644
--- a/src/librustc/middle/typeck/check/mod.rs
+++ b/src/librustc/middle/typeck/check/mod.rs
@@ -107,8 +107,8 @@ use middle::typeck::no_params;
 use middle::typeck::{require_same_types, method_map, vtable_map};
 use middle::lang_items::TypeIdLangItem;
 use util::common::{block_query, indenter, loop_query};
-use util::ppaux::UserString;
 use util::ppaux;
+use util::ppaux::{UserString, Repr};
 
 use std::cell::{Cell, RefCell};
 use std::hashmap::HashMap;
diff --git a/src/librustc/middle/typeck/check/regionck.rs b/src/librustc/middle/typeck/check/regionck.rs
index fb914779cce39..406b0a56e35c2 100644
--- a/src/librustc/middle/typeck/check/regionck.rs
+++ b/src/librustc/middle/typeck/check/regionck.rs
@@ -31,13 +31,14 @@ this point a bit better.
 use middle::freevars::get_freevars;
 use middle::ty::{ReScope};
 use middle::ty;
+use middle::typeck::astconv::AstConv;
 use middle::typeck::check::FnCtxt;
 use middle::typeck::check::regionmanip::relate_nested_regions;
 use middle::typeck::infer::resolve_and_force_all_but_regions;
 use middle::typeck::infer::resolve_type;
 use middle::typeck::infer;
-use util::ppaux::{ty_to_str, region_to_str};
 use middle::pat_util;
+use util::ppaux::{ty_to_str, region_to_str, Repr};
 
 use syntax::ast::{ManagedSigil, OwnedSigil, BorrowedSigil};
 use syntax::ast::{DefArg, DefBinding, DefLocal, DefSelf, DefUpvar};
@@ -833,14 +834,14 @@ pub mod guarantor {
      * but more special purpose.
      */
 
-
+    use middle::typeck::astconv::AstConv;
     use middle::typeck::check::regionck::Rcx;
     use middle::typeck::check::regionck::mk_subregion_due_to_derefence;
     use middle::typeck::infer;
     use middle::ty;
     use syntax::ast;
     use syntax::codemap::Span;
-    use util::ppaux::{ty_to_str};
+    use util::ppaux::{ty_to_str, Repr};
 
     pub fn for_addr_of(rcx: &mut Rcx, expr: &ast::Expr, base: &ast::Expr) {
         /*!
diff --git a/src/librustc/middle/typeck/check/vtable.rs b/src/librustc/middle/typeck/check/vtable.rs
index b12f5396887fa..208ba615d232c 100644
--- a/src/librustc/middle/typeck/check/vtable.rs
+++ b/src/librustc/middle/typeck/check/vtable.rs
@@ -12,6 +12,7 @@
 use middle::ty;
 use middle::ty::{AutoAddEnv, AutoDerefRef, AutoObject, param_ty};
 use middle::ty_fold::TypeFolder;
+use middle::typeck::astconv::AstConv;
 use middle::typeck::check::{FnCtxt, impl_self_ty};
 use middle::typeck::check::{structurally_resolved_type};
 use middle::typeck::infer::fixup_err_to_str;
@@ -23,6 +24,7 @@ use middle::typeck::{param_numbered, param_self, param_index};
 use middle::subst::Subst;
 use util::common::indenter;
 use util::ppaux;
+use util::ppaux::Repr;
 
 use std::cell::RefCell;
 use std::hashmap::HashSet;
diff --git a/src/librustc/middle/typeck/check/writeback.rs b/src/librustc/middle/typeck/check/writeback.rs
index ce9f8ba221228..9305ddcc5d136 100644
--- a/src/librustc/middle/typeck/check/writeback.rs
+++ b/src/librustc/middle/typeck/check/writeback.rs
@@ -15,6 +15,7 @@
 
 use middle::pat_util;
 use middle::ty;
+use middle::typeck::astconv::AstConv;
 use middle::typeck::check::{FnCtxt, SelfInfo};
 use middle::typeck::infer::{force_all, resolve_all, resolve_region};
 use middle::typeck::infer::resolve_type;
@@ -25,6 +26,7 @@ use middle::typeck::method_map_entry;
 use middle::typeck::write_substs_to_tcx;
 use middle::typeck::write_ty_to_tcx;
 use util::ppaux;
+use util::ppaux::Repr;
 
 use syntax::ast;
 use syntax::codemap::Span;
diff --git a/src/librustc/middle/typeck/coherence.rs b/src/librustc/middle/typeck/coherence.rs
index 39c483241cbae..177b8d9fafc25 100644
--- a/src/librustc/middle/typeck/coherence.rs
+++ b/src/librustc/middle/typeck/coherence.rs
@@ -34,6 +34,7 @@ use middle::typeck::infer::combine::Combine;
 use middle::typeck::infer::InferCtxt;
 use middle::typeck::infer::{new_infer_ctxt, resolve_ivar, resolve_type};
 use middle::typeck::infer;
+use util::ppaux::Repr;
 use syntax::ast::{Crate, DefId, DefStruct, DefTy};
 use syntax::ast::{item, item_enum, item_impl, item_mod, item_struct};
 use syntax::ast::{LOCAL_CRATE, trait_ref, ty_path};
diff --git a/src/librustc/middle/typeck/collect.rs b/src/librustc/middle/typeck/collect.rs
index 9a76a6b10c3ba..a713ada3706c3 100644
--- a/src/librustc/middle/typeck/collect.rs
+++ b/src/librustc/middle/typeck/collect.rs
@@ -42,6 +42,7 @@ use middle::typeck::astconv;
 use middle::typeck::rscope::*;
 use middle::typeck::{CrateCtxt, lookup_def_tcx, no_params, write_ty_to_tcx};
 use util::ppaux;
+use util::ppaux::Repr;
 
 use std::vec;
 use syntax::abi::AbiSet;
diff --git a/src/librustc/middle/typeck/infer/coercion.rs b/src/librustc/middle/typeck/infer/coercion.rs
index a2f94a174cf23..8a3cc5de0d478 100644
--- a/src/librustc/middle/typeck/infer/coercion.rs
+++ b/src/librustc/middle/typeck/infer/coercion.rs
@@ -71,7 +71,7 @@ use middle::ty::{vstore_slice, vstore_box, vstore_uniq};
 use middle::ty::{mt};
 use middle::ty;
 use middle::typeck::infer::{CoerceResult, resolve_type, Coercion};
-use middle::typeck::infer::combine::CombineFields;
+use middle::typeck::infer::combine::{CombineFields, Combine};
 use middle::typeck::infer::sub::Sub;
 use middle::typeck::infer::to_str::InferStr;
 use middle::typeck::infer::resolve::try_resolve_tvar_shallow;
diff --git a/src/librustc/middle/typeck/infer/combine.rs b/src/librustc/middle/typeck/infer/combine.rs
index 8d949cc1bc909..7c232c8168fa9 100644
--- a/src/librustc/middle/typeck/infer/combine.rs
+++ b/src/librustc/middle/typeck/infer/combine.rs
@@ -51,6 +51,7 @@ use middle::ty::{FloatVar, FnSig, IntVar, TyVar};
 use middle::ty::{IntType, UintType, substs};
 use middle::ty::{BuiltinBounds};
 use middle::ty;
+use middle::typeck::infer::{then, ToUres};
 use middle::typeck::infer::glb::Glb;
 use middle::typeck::infer::lub::Lub;
 use middle::typeck::infer::sub::Sub;
@@ -59,6 +60,7 @@ use middle::typeck::infer::unify::InferCtxtMethods;
 use middle::typeck::infer::{InferCtxt, cres, ures};
 use middle::typeck::infer::{TypeTrace};
 use util::common::indent;
+use util::ppaux::Repr;
 
 use std::result;
 use syntax::ast::{Onceness, purity};
diff --git a/src/librustc/middle/typeck/infer/glb.rs b/src/librustc/middle/typeck/infer/glb.rs
index 7222e28b6e1e5..137ba657ad5ec 100644
--- a/src/librustc/middle/typeck/infer/glb.rs
+++ b/src/librustc/middle/typeck/infer/glb.rs
@@ -12,6 +12,7 @@
 use middle::ty::{BuiltinBounds};
 use middle::ty::RegionVid;
 use middle::ty;
+use middle::typeck::infer::then;
 use middle::typeck::infer::combine::*;
 use middle::typeck::infer::lattice::*;
 use middle::typeck::infer::lub::Lub;
diff --git a/src/librustc/middle/typeck/infer/lattice.rs b/src/librustc/middle/typeck/infer/lattice.rs
index b448c33b8d02d..69bc3e1311344 100644
--- a/src/librustc/middle/typeck/infer/lattice.rs
+++ b/src/librustc/middle/typeck/infer/lattice.rs
@@ -35,6 +35,7 @@
 
 use middle::ty::{RegionVid, TyVar, Vid};
 use middle::ty;
+use middle::typeck::infer::{then, ToUres};
 use middle::typeck::infer::*;
 use middle::typeck::infer::combine::*;
 use middle::typeck::infer::glb::Glb;
diff --git a/src/librustc/middle/typeck/infer/lub.rs b/src/librustc/middle/typeck/infer/lub.rs
index 439de728b7c35..0cb16c8fbfb60 100644
--- a/src/librustc/middle/typeck/infer/lub.rs
+++ b/src/librustc/middle/typeck/infer/lub.rs
@@ -12,6 +12,7 @@
 use middle::ty::{BuiltinBounds};
 use middle::ty::RegionVid;
 use middle::ty;
+use middle::typeck::infer::then;
 use middle::typeck::infer::combine::*;
 use middle::typeck::infer::glb::Glb;
 use middle::typeck::infer::lattice::*;
diff --git a/src/librustc/middle/typeck/infer/mod.rs b/src/librustc/middle/typeck/infer/mod.rs
index 63a1e869437c5..91c1a62b72f20 100644
--- a/src/librustc/middle/typeck/infer/mod.rs
+++ b/src/librustc/middle/typeck/infer/mod.rs
@@ -45,7 +45,6 @@ use syntax::codemap;
 use syntax::codemap::Span;
 use util::common::indent;
 use util::ppaux::{bound_region_to_str, ty_to_str, trait_ref_to_str, Repr};
-use util::ppaux::{UserString};
 
 pub mod doc;
 pub mod macros;
diff --git a/src/librustc/middle/typeck/infer/region_inference/mod.rs b/src/librustc/middle/typeck/infer/region_inference/mod.rs
index 6a338c73e9bc0..b5e67361378a9 100644
--- a/src/librustc/middle/typeck/infer/region_inference/mod.rs
+++ b/src/librustc/middle/typeck/infer/region_inference/mod.rs
@@ -12,7 +12,7 @@
 
 
 use middle::ty;
-use middle::ty::{FreeRegion, Region, RegionVid};
+use middle::ty::{FreeRegion, Region, RegionVid, Vid};
 use middle::ty::{ReEmpty, ReStatic, ReInfer, ReFree, ReEarlyBound,
                  ReLateBound};
 use middle::ty::{ReScope, ReVar, ReSkolemized, BrFresh};
diff --git a/src/librustc/middle/typeck/infer/sub.rs b/src/librustc/middle/typeck/infer/sub.rs
index e82ae114b9cb1..81faec297a139 100644
--- a/src/librustc/middle/typeck/infer/sub.rs
+++ b/src/librustc/middle/typeck/infer/sub.rs
@@ -14,11 +14,12 @@ use middle::ty;
 use middle::ty::TyVar;
 use middle::typeck::check::regionmanip::replace_bound_regions_in_fn_sig;
 use middle::typeck::infer::combine::*;
-use middle::typeck::infer::cres;
+use middle::typeck::infer::{cres, CresCompare};
 use middle::typeck::infer::glb::Glb;
 use middle::typeck::infer::InferCtxt;
 use middle::typeck::infer::lattice::CombineFieldsLatticeMethods;
 use middle::typeck::infer::lub::Lub;
+use middle::typeck::infer::then;
 use middle::typeck::infer::to_str::InferStr;
 use middle::typeck::infer::{TypeTrace, Subtype};
 use util::common::{indenter};
diff --git a/src/librustc/middle/typeck/variance.rs b/src/librustc/middle/typeck/variance.rs
index 7f7bcf202ab46..6ddb023066edf 100644
--- a/src/librustc/middle/typeck/variance.rs
+++ b/src/librustc/middle/typeck/variance.rs
@@ -204,6 +204,7 @@ use syntax::parse::token;
 use syntax::opt_vec;
 use syntax::visit;
 use syntax::visit::Visitor;
+use util::ppaux::Repr;
 
 pub fn infer_variance(tcx: ty::ctxt,
                       crate: &ast::Crate) {
diff --git a/src/librustc/util/sha2.rs b/src/librustc/util/sha2.rs
index b3c4fbf110563..73d39d8145fc5 100644
--- a/src/librustc/util/sha2.rs
+++ b/src/librustc/util/sha2.rs
@@ -522,7 +522,7 @@ static H256: [u32, ..8] = [
 
 #[cfg(test)]
 mod tests {
-    use super::{Digest, Sha256};
+    use super::{Digest, Sha256, FixedBuffer};
     use std::vec;
     use std::rand::isaac::IsaacRng;
     use std::rand::Rng;
@@ -633,7 +633,7 @@ mod tests {
 #[cfg(test)]
 mod bench {
     use extra::test::BenchHarness;
-    use super::Sha256;
+    use super::{Sha256, FixedBuffer, Digest};
 
     #[bench]
     pub fn sha256_10(bh: &mut BenchHarness) {
diff --git a/src/librustpkg/api.rs b/src/librustpkg/api.rs
index 45c37a93e3e1e..2a1728e2e6b2b 100644
--- a/src/librustpkg/api.rs
+++ b/src/librustpkg/api.rs
@@ -8,6 +8,7 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+use CtxMethods;
 use context::*;
 use crate::*;
 use crate_id::*;
diff --git a/src/librustpkg/tests.rs b/src/librustpkg/tests.rs
index 2c0946f49ec51..7d39be913b4e6 100644
--- a/src/librustpkg/tests.rs
+++ b/src/librustpkg/tests.rs
@@ -10,6 +10,7 @@
 
 // rustpkg unit tests
 
+use CtxMethods;
 use context::{BuildContext, Context, RustcFlags};
 use std::{os, run, str, task};
 use std::io;
diff --git a/src/librustpkg/util.rs b/src/librustpkg/util.rs
index 4c533860c5702..8111c8a805def 100644
--- a/src/librustpkg/util.rs
+++ b/src/librustpkg/util.rs
@@ -28,6 +28,7 @@ use syntax::visit::Visitor;
 use syntax::util::small_vector::SmallVector;
 use rustc::back::link::output_type_exe;
 use rustc::back::link;
+use CtxMethods;
 use context::{in_target, StopBefore, Link, Assemble, BuildContext};
 use crate_id::CrateId;
 use package_source::PkgSrc;
diff --git a/src/librustuv/async.rs b/src/librustuv/async.rs
index d9589788c4db1..5085dd64b6759 100644
--- a/src/librustuv/async.rs
+++ b/src/librustuv/async.rs
@@ -125,7 +125,7 @@ impl Drop for AsyncWatcher {
 
 #[cfg(test)]
 mod test_remote {
-    use std::rt::rtio::Callback;
+    use std::rt::rtio::{Callback, RemoteCallback};
     use std::rt::thread::Thread;
 
     use super::AsyncWatcher;
diff --git a/src/librustuv/lib.rs b/src/librustuv/lib.rs
index ccfa5a51b6a12..675e852ebaef0 100644
--- a/src/librustuv/lib.rs
+++ b/src/librustuv/lib.rs
@@ -54,7 +54,6 @@ use std::rt::task::{BlockedTask, Task};
 use std::str::raw::from_c_str;
 use std::str;
 use std::task;
-use std::unstable::finally::Finally;
 
 pub use self::async::AsyncWatcher;
 pub use self::file::{FsRequest, FileWatcher};
diff --git a/src/librustuv/net.rs b/src/librustuv/net.rs
index 85e9202c1fa60..ee78585fcfd71 100644
--- a/src/librustuv/net.rs
+++ b/src/librustuv/net.rs
@@ -17,6 +17,7 @@ use std::ptr;
 use std::rt::rtio;
 use std::rt::task::BlockedTask;
 use std::str;
+use std::unstable::finally::Finally;
 use std::vec;
 
 use homing::{HomingIO, HomeHandle};
diff --git a/src/libstd/ascii.rs b/src/libstd/ascii.rs
index adc10c456e350..c52ff2d088d13 100644
--- a/src/libstd/ascii.rs
+++ b/src/libstd/ascii.rs
@@ -478,10 +478,10 @@ static ASCII_UPPER_MAP: &'static [u8] = &[
 
 #[cfg(test)]
 mod tests {
+    use prelude::*;
     use super::*;
     use str::from_char;
     use char::from_u32;
-    use option::{Some, None};
 
     macro_rules! v2ascii (
         ( [$($e:expr),*]) => ( [$(Ascii{chr:$e}),*]);
diff --git a/src/libstd/at_vec.rs b/src/libstd/at_vec.rs
index fd8b88417e0eb..aedda59bbac1b 100644
--- a/src/libstd/at_vec.rs
+++ b/src/libstd/at_vec.rs
@@ -169,6 +169,7 @@ pub mod raw {
     use at_vec::capacity;
     use cast;
     use cast::{transmute, transmute_copy};
+    use container::Container;
     use option::None;
     use ptr;
     use mem;
diff --git a/src/libstd/bool.rs b/src/libstd/bool.rs
index 923aacf352bc0..a20ddc141479f 100644
--- a/src/libstd/bool.rs
+++ b/src/libstd/bool.rs
@@ -317,10 +317,7 @@ impl Zero for bool {
 
 #[cfg(test)]
 mod tests {
-    use cmp::{Equal, Greater, Less, Eq, TotalOrd};
-    use ops::{BitAnd, BitXor, BitOr};
-    use from_str::{FromStr, from_str};
-    use option::{Some, None};
+    use prelude::*;
     use super::all_values;
 
     #[test]
diff --git a/src/libstd/c_str.rs b/src/libstd/c_str.rs
index a7e502be32e61..b924378a0e720 100644
--- a/src/libstd/c_str.rs
+++ b/src/libstd/c_str.rs
@@ -377,10 +377,10 @@ pub unsafe fn from_c_multistring(buf: *libc::c_char,
 
 #[cfg(test)]
 mod tests {
+    use prelude::*;
     use super::*;
     use libc;
     use ptr;
-    use option::{Some, None};
 
     #[test]
     fn test_str_multistring_parsing() {
@@ -568,11 +568,10 @@ mod tests {
 
 #[cfg(test)]
 mod bench {
-    use iter::range;
+    use extra::test::BenchHarness;
     use libc;
-    use option::Some;
+    use prelude::*;
     use ptr;
-    use extra::test::BenchHarness;
 
     #[inline]
     fn check(s: &str, c_str: *libc::c_char) {
diff --git a/src/libstd/comm/mod.rs b/src/libstd/comm/mod.rs
index b21b255dbfc7c..bf37e5fca6a5f 100644
--- a/src/libstd/comm/mod.rs
+++ b/src/libstd/comm/mod.rs
@@ -238,7 +238,7 @@ use rt::local::Local;
 use rt::task::{Task, BlockedTask};
 use rt::thread::Thread;
 use sync::atomics::{AtomicInt, AtomicBool, SeqCst, Relaxed};
-use vec::{ImmutableVector, OwnedVector};
+use vec::OwnedVector;
 
 use spsc = sync::spsc_queue;
 use mpsc = sync::mpsc_queue;
diff --git a/src/libstd/gc.rs b/src/libstd/gc.rs
index d3bec8ca6c907..df7111ca51092 100644
--- a/src/libstd/gc.rs
+++ b/src/libstd/gc.rs
@@ -54,6 +54,7 @@ impl<T: DeepClone + Send + 'static> DeepClone for Gc<T> {
 
 #[cfg(test)]
 mod tests {
+    use prelude::*;
     use super::*;
     use cell::RefCell;
 
diff --git a/src/libstd/io/buffered.rs b/src/libstd/io/buffered.rs
index fd8fd0c681407..fa85f286af7ff 100644
--- a/src/libstd/io/buffered.rs
+++ b/src/libstd/io/buffered.rs
@@ -318,9 +318,10 @@ impl<S: Stream> Decorator<S> for BufferedStream<S> {
 
 #[cfg(test)]
 mod test {
+    use io::Decorator;
+    use io;
     use prelude::*;
     use super::*;
-    use io;
     use super::super::mem::{MemReader, MemWriter};
     use Harness = extra::test::BenchHarness;
 
diff --git a/src/libstd/io/extensions.rs b/src/libstd/io/extensions.rs
index 1b6d1171a52e6..860ff64401870 100644
--- a/src/libstd/io/extensions.rs
+++ b/src/libstd/io/extensions.rs
@@ -16,6 +16,7 @@
 use iter::Iterator;
 use option::Option;
 use io::Reader;
+use vec::OwnedVector;
 
 /// An iterator that reads a single byte on each iteration,
 /// until `.read_byte()` returns `None`.
@@ -130,10 +131,11 @@ pub fn u64_from_be_bytes(data: &[u8],
 
 #[cfg(test)]
 mod test {
-    use option::{None, Option, Some};
+    use unstable::finally::Finally;
+    use io::Decorator;
+    use prelude::*;
     use io::mem::{MemReader, MemWriter};
-    use io::{Reader, io_error, placeholder_error};
-    use vec::ImmutableVector;
+    use io::{io_error, placeholder_error};
 
     struct InitialZeroByteReader {
         count: int,
@@ -375,7 +377,7 @@ mod test {
     fn push_bytes_fail_reset_len() {
         // push_bytes unsafely sets the vector length. This is testing that
         // upon failure the length is reset correctly.
-        let mut reader = ErroringLaterReader {
+        let reader = ErroringLaterReader {
             count: 0,
         };
         // FIXME (#7049): Figure out some other way to do this.
diff --git a/src/libstd/io/net/addrinfo.rs b/src/libstd/io/net/addrinfo.rs
index 6d968de209ca8..fe29a11226228 100644
--- a/src/libstd/io/net/addrinfo.rs
+++ b/src/libstd/io/net/addrinfo.rs
@@ -100,8 +100,8 @@ fn lookup(hostname: Option<&str>, servname: Option<&str>, hint: Option<Hint>)
 
 #[cfg(test)]
 mod test {
-    use option::Some;
     use io::net::ip::Ipv4Addr;
+    use prelude::*;
     use super::*;
 
     #[test]
diff --git a/src/libstd/io/net/ip.rs b/src/libstd/io/net/ip.rs
index 9fd183ca7704c..4fb631eb3d646 100644
--- a/src/libstd/io/net/ip.rs
+++ b/src/libstd/io/net/ip.rs
@@ -10,9 +10,11 @@
 
 use container::Container;
 use from_str::FromStr;
+use iter::Iterator;
 use option::{Option, None, Some};
+use str::StrSlice;
 use to_str::ToStr;
-use vec::{MutableCloneableVector, ImmutableVector};
+use vec::{MutableCloneableVector, ImmutableVector, MutableVector};
 
 pub type Port = u16;
 
@@ -335,9 +337,8 @@ impl FromStr for SocketAddr {
 
 #[cfg(test)]
 mod test {
+    use prelude::*;
     use super::*;
-    use from_str::FromStr;
-    use option::{Option, Some, None};
 
     #[test]
     fn test_from_str_ipv4() {
diff --git a/src/libstd/io/net/udp.rs b/src/libstd/io/net/udp.rs
index 8994f6b461a7d..eaee48dc6e0f3 100644
--- a/src/libstd/io/net/udp.rs
+++ b/src/libstd/io/net/udp.rs
@@ -100,8 +100,6 @@ impl Writer for UdpStream {
 mod test {
     use super::*;
     use io::net::ip::{SocketAddr};
-    use io::*;
-    use prelude::*;
 
     iotest!(fn bind_error() {
         let mut called = false;
diff --git a/src/libstd/io/option.rs b/src/libstd/io/option.rs
index a661d6ab7eb79..60e63e95dcc60 100644
--- a/src/libstd/io/option.rs
+++ b/src/libstd/io/option.rs
@@ -104,8 +104,9 @@ impl<T, A: Acceptor<T>> Acceptor<T> for Option<A> {
 
 #[cfg(test)]
 mod test {
-    use option::*;
+    use prelude::*;
     use super::super::mem::*;
+    use io::Decorator;
     use super::super::{PreviousIoError, io_error};
 
     #[test]
diff --git a/src/libstd/io/stdio.rs b/src/libstd/io/stdio.rs
index 396e892520c0b..6e6cdfb25dee7 100644
--- a/src/libstd/io/stdio.rs
+++ b/src/libstd/io/stdio.rs
@@ -26,6 +26,7 @@ out.write(bytes!("Hello, world!"));
 
 */
 
+use container::Container;
 use fmt;
 use io::buffered::LineBufferedWriter;
 use io::{Reader, Writer, io_error, IoError, OtherIoError,
@@ -37,7 +38,9 @@ use result::{Ok, Err};
 use rt::local::Local;
 use rt::rtio::{DontClose, IoFactory, LocalIo, RtioFileStream, RtioTTY};
 use rt::task::Task;
+use str::StrSlice;
 use util;
+use vec::ImmutableVector;
 
 // And so begins the tale of acquiring a uv handle to a stdio stream on all
 // platforms in all situations. Our story begins by splitting the world into two
diff --git a/src/libstd/io/util.rs b/src/libstd/io/util.rs
index 4803054333607..86538c37249ed 100644
--- a/src/libstd/io/util.rs
+++ b/src/libstd/io/util.rs
@@ -193,6 +193,7 @@ pub fn copy<R: Reader, W: Writer>(r: &mut R, w: &mut W) {
 
 #[cfg(test)]
 mod test {
+    use io::Decorator;
     use io::mem::{MemReader, MemWriter};
     use super::*;
     use prelude::*;
diff --git a/src/libstd/num/int_macros.rs b/src/libstd/num/int_macros.rs
index a08faf6619919..0e7e4277dd6cd 100644
--- a/src/libstd/num/int_macros.rs
+++ b/src/libstd/num/int_macros.rs
@@ -445,6 +445,7 @@ mod tests {
     use int;
     use i32;
     use num;
+    use num::CheckedDiv;
     use mem;
 
     #[test]
diff --git a/src/libstd/num/strconv.rs b/src/libstd/num/strconv.rs
index 7dcae69f70d6d..ba51ac3e88d3e 100644
--- a/src/libstd/num/strconv.rs
+++ b/src/libstd/num/strconv.rs
@@ -21,7 +21,7 @@ use str;
 use vec::{CopyableVector, ImmutableVector, MutableVector};
 use vec::OwnedVector;
 use num::{NumCast, Zero, One, cast, pow_with_uint, Integer};
-use num::{Round, Float, FPNaN, FPInfinite};
+use num::{Round, Float, FPNaN, FPInfinite, ToPrimitive};
 
 pub enum ExponentFormat {
     ExpNone,
diff --git a/src/libstd/num/uint_macros.rs b/src/libstd/num/uint_macros.rs
index 6da3e43a5d6e8..1a256981d74ee 100644
--- a/src/libstd/num/uint_macros.rs
+++ b/src/libstd/num/uint_macros.rs
@@ -324,6 +324,7 @@ mod tests {
     use super::*;
 
     use num;
+    use num::CheckedDiv;
     use mem;
     use u16;
 
diff --git a/src/libstd/option.rs b/src/libstd/option.rs
index a44b280aa84bd..f49244a3607ef 100644
--- a/src/libstd/option.rs
+++ b/src/libstd/option.rs
@@ -457,6 +457,7 @@ pub fn collect<T, Iter: Iterator<Option<T>>, V: FromIterator<T>>(iter: Iter) ->
 #[cfg(test)]
 mod tests {
     use super::*;
+    use prelude::*;
 
     use iter::range;
     use str::StrSlice;
diff --git a/src/libstd/os.rs b/src/libstd/os.rs
index 8f2f219088504..4042e13a592d3 100644
--- a/src/libstd/os.rs
+++ b/src/libstd/os.rs
@@ -81,13 +81,15 @@ pub fn getcwd() -> Path {
 
 #[cfg(windows)]
 pub mod win32 {
+    use libc::types::os::arch::extra::DWORD;
     use libc;
-    use vec;
-    use str;
     use option::{None, Option};
     use option;
     use os::TMPBUF_SZ;
-    use libc::types::os::arch::extra::DWORD;
+    use str::StrSlice;
+    use str;
+    use vec::{MutableVector, ImmutableVector, OwnedVector};
+    use vec;
 
     pub fn fill_utf16_buf_and_decode(f: |*mut u16, DWORD| -> DWORD)
         -> Option<~str> {
@@ -1237,16 +1239,14 @@ pub mod consts {
 
 #[cfg(test)]
 mod tests {
+    use prelude::*;
     use c_str::ToCStr;
-    use option::Some;
     use option;
     use os::{env, getcwd, getenv, make_absolute, args};
     use os::{setenv, unsetenv};
     use os;
-    use path::Path;
     use rand::Rng;
     use rand;
-    use str::StrSlice;
 
 
     #[test]
diff --git a/src/libstd/path/mod.rs b/src/libstd/path/mod.rs
index 6488595ea4f92..354cc10f022a6 100644
--- a/src/libstd/path/mod.rs
+++ b/src/libstd/path/mod.rs
@@ -687,6 +687,7 @@ fn from_utf8_with_replacement(mut v: &[u8]) -> ~str {
 }
 #[cfg(test)]
 mod tests {
+    use prelude::*;
     use super::{GenericPath, PosixPath, WindowsPath};
     use c_str::ToCStr;
 
diff --git a/src/libstd/path/posix.rs b/src/libstd/path/posix.rs
index d149634a396ad..7b94de6c094d6 100644
--- a/src/libstd/path/posix.rs
+++ b/src/libstd/path/posix.rs
@@ -21,7 +21,8 @@ use str;
 use str::Str;
 use to_bytes::IterBytes;
 use vec;
-use vec::{CopyableVector, RSplitIterator, SplitIterator, Vector, VectorVector};
+use vec::{CopyableVector, RSplitIterator, SplitIterator, Vector, VectorVector,
+          ImmutableEqVector, OwnedVector, ImmutableVector, OwnedCopyableVector};
 use super::{BytesContainer, GenericPath, GenericPathUnsafe};
 
 /// Iterator that yields successive components of a Path as &[u8]
@@ -441,11 +442,9 @@ static dot_dot_static: &'static [u8] = bytes!("..");
 
 #[cfg(test)]
 mod tests {
+    use prelude::*;
     use super::*;
-    use option::{Option, Some, None};
-    use iter::Iterator;
     use str;
-    use vec::Vector;
 
     macro_rules! t(
         (s: $path:expr, $exp:expr) => (
@@ -1324,6 +1323,7 @@ mod tests {
 mod bench {
     use extra::test::BenchHarness;
     use super::*;
+    use prelude::*;
 
     #[bench]
     fn join_home_dir(bh: &mut BenchHarness) {
diff --git a/src/libstd/path/windows.rs b/src/libstd/path/windows.rs
index 913b314c00bf8..09b00be7e9d61 100644
--- a/src/libstd/path/windows.rs
+++ b/src/libstd/path/windows.rs
@@ -13,14 +13,16 @@
 use ascii::AsciiCast;
 use c_str::{CString, ToCStr};
 use cast;
+use clone::Clone;
+use container::Container;
 use cmp::Eq;
 use from_str::FromStr;
 use iter::{AdditiveIterator, DoubleEndedIterator, Extendable, Invert, Iterator, Map};
 use option::{Option, Some, None};
 use str;
-use str::{CharSplitIterator, OwnedStr, Str, StrVector};
+use str::{CharSplitIterator, OwnedStr, Str, StrVector, StrSlice};
 use to_bytes::IterBytes;
-use vec::Vector;
+use vec::{Vector, OwnedVector, ImmutableVector};
 use super::{contains_nul, BytesContainer, GenericPath, GenericPathUnsafe};
 
 /// Iterator that yields successive components of a Path as &str
@@ -1051,11 +1053,9 @@ fn prefix_len(p: Option<PathPrefix>) -> uint {
 
 #[cfg(test)]
 mod tests {
+    use prelude::*;
     use super::*;
     use super::parse_prefix;
-    use option::{Some,None};
-    use iter::Iterator;
-    use vec::Vector;
 
     macro_rules! t(
         (s: $path:expr, $exp:expr) => (
diff --git a/src/libstd/rand/distributions/exponential.rs b/src/libstd/rand/distributions/exponential.rs
index 6164ecd1a2b45..336528eeb258b 100644
--- a/src/libstd/rand/distributions/exponential.rs
+++ b/src/libstd/rand/distributions/exponential.rs
@@ -10,6 +10,7 @@
 
 //! The exponential distribution.
 
+use num::Exponential;
 use rand::{Rng, Rand};
 use rand::distributions::{ziggurat, ziggurat_tables, Sample, IndependentSample};
 
@@ -90,10 +91,10 @@ impl IndependentSample<f64> for Exp {
 
 #[cfg(test)]
 mod test {
+    use rand::distributions::*;
+    use prelude::*;
     use rand::*;
     use super::*;
-    use iter::range;
-    use option::{Some, None};
 
     #[test]
     fn test_exp() {
@@ -119,11 +120,11 @@ mod test {
 #[cfg(test)]
 mod bench {
     use extra::test::BenchHarness;
+    use mem::size_of;
+    use prelude::*;
     use rand::{XorShiftRng, RAND_BENCH_N};
     use super::*;
-    use iter::range;
-    use option::{Some, None};
-    use mem::size_of;
+    use rand::distributions::*;
 
     #[bench]
     fn rand_exp(bh: &mut BenchHarness) {
diff --git a/src/libstd/rand/distributions/gamma.rs b/src/libstd/rand/distributions/gamma.rs
index 731baa0f30555..96efa948015ba 100644
--- a/src/libstd/rand/distributions/gamma.rs
+++ b/src/libstd/rand/distributions/gamma.rs
@@ -10,10 +10,11 @@
 
 //! The Gamma and derived distributions.
 
+use num::Algebraic;
+use num;
 use rand::{Rng, Open01};
-use super::{IndependentSample, Sample, Exp};
 use super::normal::StandardNormal;
-use num;
+use super::{IndependentSample, Sample, Exp};
 
 /// The Gamma distribution `Gamma(shape, scale)` distribution.
 ///
@@ -309,10 +310,10 @@ impl IndependentSample<f64> for StudentT {
 
 #[cfg(test)]
 mod test {
+    use rand::distributions::*;
+    use prelude::*;
     use rand::*;
     use super::*;
-    use iter::range;
-    use option::{Some, None};
 
     #[test]
     fn test_chi_squared_one() {
@@ -370,13 +371,12 @@ mod test {
 
 #[cfg(test)]
 mod bench {
-    use super::*;
+    use extra::test::BenchHarness;
     use mem::size_of;
+    use prelude::*;
     use rand::distributions::IndependentSample;
     use rand::{StdRng, RAND_BENCH_N};
-    use extra::test::BenchHarness;
-    use iter::range;
-    use option::{Some, None};
+    use super::*;
 
 
     #[bench]
diff --git a/src/libstd/rand/distributions/mod.rs b/src/libstd/rand/distributions/mod.rs
index a297bbee1e6f7..a996233abe3dc 100644
--- a/src/libstd/rand/distributions/mod.rs
+++ b/src/libstd/rand/distributions/mod.rs
@@ -20,11 +20,14 @@ that do not need to record state.
 
 */
 
-use iter::range;
+use container::Container;
+use iter::{range, Iterator};
 use option::{Some, None};
 use num;
+use num::CheckedAdd;
 use rand::{Rng, Rand};
 use clone::Clone;
+use vec::MutableVector;
 
 pub use self::range::Range;
 pub use self::gamma::{Gamma, ChiSquared, FisherF, StudentT};
@@ -250,9 +253,9 @@ fn ziggurat<R:Rng>(
 
 #[cfg(test)]
 mod tests {
+    use prelude::*;
     use rand::*;
     use super::*;
-    use option::{Some, None};
 
     #[deriving(Eq)]
     struct ConstRand(uint);
diff --git a/src/libstd/rand/distributions/normal.rs b/src/libstd/rand/distributions/normal.rs
index 8dc9372aec929..7a15091df9d7d 100644
--- a/src/libstd/rand/distributions/normal.rs
+++ b/src/libstd/rand/distributions/normal.rs
@@ -10,6 +10,7 @@
 
 //! The normal and derived distributions.
 
+use num::Exponential;
 use rand::{Rng, Rand, Open01};
 use rand::distributions::{ziggurat, ziggurat_tables, Sample, IndependentSample};
 
@@ -147,10 +148,10 @@ impl IndependentSample<f64> for LogNormal {
 
 #[cfg(test)]
 mod tests {
+    use prelude::*;
     use rand::*;
     use super::*;
-    use iter::range;
-    use option::{Some, None};
+    use rand::distributions::*;
 
     #[test]
     fn test_normal() {
@@ -187,11 +188,11 @@ mod tests {
 #[cfg(test)]
 mod bench {
     use extra::test::BenchHarness;
+    use mem::size_of;
+    use prelude::*;
     use rand::{XorShiftRng, RAND_BENCH_N};
+    use rand::distributions::*;
     use super::*;
-    use iter::range;
-    use option::{Some, None};
-    use mem::size_of;
 
     #[bench]
     fn rand_normal(bh: &mut BenchHarness) {
diff --git a/src/libstd/rand/distributions/range.rs b/src/libstd/rand/distributions/range.rs
index fc6cdde162df4..8141b3d3e896f 100644
--- a/src/libstd/rand/distributions/range.rs
+++ b/src/libstd/rand/distributions/range.rs
@@ -163,12 +163,11 @@ float_impl! { f64 }
 
 #[cfg(test)]
 mod tests {
+    use prelude::*;
     use super::*;
     use rand::*;
+    use rand::distributions::*;
     use num::Bounded;
-    use iter::range;
-    use option::{Some, None};
-    use vec::ImmutableVector;
 
     #[should_fail]
     #[test]
diff --git a/src/libstd/rand/isaac.rs b/src/libstd/rand/isaac.rs
index 38d7a683a702f..6fd2cde9dfbc6 100644
--- a/src/libstd/rand/isaac.rs
+++ b/src/libstd/rand/isaac.rs
@@ -12,8 +12,9 @@
 
 use rand::{Rng, SeedableRng, OSRng};
 use iter::{Iterator, range, range_step, Repeat};
+use num::Times;
 use option::{None, Some};
-use vec::raw;
+use vec::{raw, MutableVector, ImmutableVector};
 use mem;
 
 static RAND_SIZE_LEN: u32 = 8;
@@ -432,8 +433,7 @@ impl<'a> SeedableRng<&'a [u64]> for Isaac64Rng {
 mod test {
     use super::*;
     use rand::{Rng, SeedableRng, OSRng};
-    use option::Some;
-    use iter::range;
+    use prelude::*;
     use vec;
 
     #[test]
diff --git a/src/libstd/rand/mod.rs b/src/libstd/rand/mod.rs
index 0fa436b2447ef..e52a38500112f 100644
--- a/src/libstd/rand/mod.rs
+++ b/src/libstd/rand/mod.rs
@@ -656,8 +656,7 @@ pub struct Closed01<F>(F);
 
 #[cfg(test)]
 mod test {
-    use iter::{Iterator, range};
-    use option::{Option, Some};
+    use prelude::*;
     use vec;
     use super::*;
 
@@ -845,11 +844,10 @@ static RAND_BENCH_N: u64 = 100;
 
 #[cfg(test)]
 mod bench {
+    use prelude::*;
     use extra::test::BenchHarness;
     use rand::{XorShiftRng, StdRng, IsaacRng, Isaac64Rng, Rng, RAND_BENCH_N};
     use mem::size_of;
-    use iter::range;
-    use option::{Some, None};
 
     #[bench]
     fn rand_xorshift(bh: &mut BenchHarness) {
diff --git a/src/libstd/rand/os.rs b/src/libstd/rand/os.rs
index 1eaff3f51a6d7..a8fd75c1beeed 100644
--- a/src/libstd/rand/os.rs
+++ b/src/libstd/rand/os.rs
@@ -106,6 +106,9 @@ impl Rng for OSRng {
         unsafe { cast::transmute(v) }
     }
     fn fill_bytes(&mut self, v: &mut [u8]) {
+        use container::Container;
+        use vec::MutableVector;
+
         extern {
             fn rust_win32_rand_gen(hProv: HCRYPTPROV, dwLen: DWORD,
                                    pbBuffer: *mut BYTE);
diff --git a/src/libstd/rand/rand_impls.rs b/src/libstd/rand/rand_impls.rs
index dd6edca94ac6b..1c90ef148fc08 100644
--- a/src/libstd/rand/rand_impls.rs
+++ b/src/libstd/rand/rand_impls.rs
@@ -226,9 +226,8 @@ impl<T: Rand + 'static> Rand for @T {
 
 #[cfg(test)]
 mod tests {
+    use prelude::*;
     use rand::{Rng, task_rng, Open01, Closed01};
-    use iter::range;
-    use option::{None, Some};
 
     struct ConstantRng(u64);
     impl Rng for ConstantRng {
diff --git a/src/libstd/rand/reader.rs b/src/libstd/rand/reader.rs
index 95a822251236c..7af98e418a811 100644
--- a/src/libstd/rand/reader.rs
+++ b/src/libstd/rand/reader.rs
@@ -10,6 +10,7 @@
 
 //! A wrapper around any Reader to treat it as an RNG.
 
+use container::Container;
 use option::{Some, None};
 use io::Reader;
 
@@ -77,6 +78,8 @@ mod test {
     use super::*;
     use io::mem::MemReader;
     use cast;
+    use rand::*;
+    use prelude::*;
 
     #[test]
     fn test_reader_rng_u64() {
diff --git a/src/libstd/rand/reseeding.rs b/src/libstd/rand/reseeding.rs
index 7055b7af3ded6..c0a7d14bf70bf 100644
--- a/src/libstd/rand/reseeding.rs
+++ b/src/libstd/rand/reseeding.rs
@@ -11,8 +11,9 @@
 //! A wrapper around another RNG that reseeds it after it
 //! generates a certain number of random bytes.
 
-use rand::{Rng, SeedableRng};
+use container::Container;
 use default::Default;
+use rand::{Rng, SeedableRng};
 
 /// How many bytes of entropy the underling RNG is allowed to generate
 /// before it is reseeded.
@@ -141,11 +142,9 @@ impl Default for ReseedWithDefault {
 
 #[cfg(test)]
 mod test {
+    use prelude::*;
     use super::*;
     use rand::{SeedableRng, Rng};
-    use default::Default;
-    use iter::range;
-    use option::{None, Some};
 
     struct Counter {
         i: u32
diff --git a/src/libstd/rc.rs b/src/libstd/rc.rs
index 9158e8cdb899c..ad2305c241017 100644
--- a/src/libstd/rc.rs
+++ b/src/libstd/rc.rs
@@ -170,6 +170,7 @@ impl<T> Drop for Rc<T> {
 
 #[cfg(test)]
 mod test_rc {
+    use prelude::*;
     use super::*;
     use cell::RefCell;
 
diff --git a/src/libstd/result.rs b/src/libstd/result.rs
index 4e8db15a92ebd..1a4e6d5bcfde9 100644
--- a/src/libstd/result.rs
+++ b/src/libstd/result.rs
@@ -293,10 +293,9 @@ pub fn fold_<T,E,Iter:Iterator<Result<T,E>>>(iterator: Iter) -> Result<(),E> {
 #[cfg(test)]
 mod tests {
     use super::*;
+    use prelude::*;
 
     use iter::range;
-    use to_str::ToStr;
-    use vec::ImmutableVector;
 
     pub fn op1() -> Result<int, ~str> { Ok(666) }
     pub fn op2() -> Result<int, ~str> { Err(~"sadface") }
diff --git a/src/libstd/rt/args.rs b/src/libstd/rt/args.rs
index a767af4cc0ebe..526ad60bb2134 100644
--- a/src/libstd/rt/args.rs
+++ b/src/libstd/rt/args.rs
@@ -64,8 +64,10 @@ pub unsafe fn init(argc: int, argv: **u8) { realargs::init(argc, argv) }
 #[cfg(target_os = "freebsd")]
 mod imp {
     use cast;
+    use clone::Clone;
     #[cfg(not(test))] use libc;
     use option::{Option, Some, None};
+    use ptr::RawPtr;
     use iter::Iterator;
     #[cfg(not(test))] use str;
     use unstable::finally::Finally;
@@ -138,7 +140,7 @@ mod imp {
 
     #[cfg(test)]
     mod tests {
-        use option::{Some, None};
+        use prelude::*;
         use super::*;
         use unstable::finally::Finally;
 
diff --git a/src/libstd/rt/borrowck.rs b/src/libstd/rt/borrowck.rs
index d1e97cb6ec0f8..7dcbae995ed7b 100644
--- a/src/libstd/rt/borrowck.rs
+++ b/src/libstd/rt/borrowck.rs
@@ -9,6 +9,8 @@
 // except according to those terms.
 
 use c_str::{ToCStr, CString};
+use container::Container;
+use iter::Iterator;
 use libc::{c_char, size_t};
 use option::{Option, None, Some};
 use ptr::RawPtr;
@@ -19,7 +21,7 @@ use str::OwnedStr;
 use str;
 use uint;
 use unstable::raw;
-use vec::ImmutableVector;
+use vec::{ImmutableVector, OwnedVector};
 
 pub static FROZEN_BIT: uint = 1 << (uint::bits - 1);
 pub static MUT_BIT: uint = 1 << (uint::bits - 2);
diff --git a/src/libstd/rt/crate_map.rs b/src/libstd/rt/crate_map.rs
index d9b40cfbb6e8c..16c1ad25448fc 100644
--- a/src/libstd/rt/crate_map.rs
+++ b/src/libstd/rt/crate_map.rs
@@ -10,7 +10,9 @@
 
 use container::MutableSet;
 use hashmap::HashSet;
+use iter::Iterator;
 use option::{Some, None, Option};
+use ptr::RawPtr;
 use vec::ImmutableVector;
 use rt::rtio::EventLoop;
 
diff --git a/src/libstd/rt/global_heap.rs b/src/libstd/rt/global_heap.rs
index c094344f6b926..7a417990a4c1a 100644
--- a/src/libstd/rt/global_heap.rs
+++ b/src/libstd/rt/global_heap.rs
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 use libc::{c_void, c_char, size_t, uintptr_t, free, malloc, realloc};
+use ptr::RawPtr;
 use unstable::intrinsics::TyDesc;
 use unstable::raw;
 use mem::size_of;
diff --git a/src/libstd/rt/local_heap.rs b/src/libstd/rt/local_heap.rs
index f2edc6e7ede60..1be942b2db19a 100644
--- a/src/libstd/rt/local_heap.rs
+++ b/src/libstd/rt/local_heap.rs
@@ -11,18 +11,21 @@
 //! The local, garbage collected heap
 
 use cast;
+use iter::Iterator;
 use libc::{c_void, uintptr_t};
 use libc;
 use mem;
 use ops::Drop;
 use option::{Option, None, Some};
 use ptr;
+use ptr::RawPtr;
 use rt::env;
 use rt::global_heap;
 use rt::local::Local;
 use rt::task::Task;
 use unstable::intrinsics::TyDesc;
 use unstable::raw;
+use vec::ImmutableVector;
 
 // This has no meaning with out rtdebug also turned on.
 #[cfg(rtdebug)]
diff --git a/src/libstd/rt/local_ptr.rs b/src/libstd/rt/local_ptr.rs
index 546a6476b57d3..f4efd8e27d02e 100644
--- a/src/libstd/rt/local_ptr.rs
+++ b/src/libstd/rt/local_ptr.rs
@@ -19,6 +19,7 @@
 
 use cast;
 use ops::Drop;
+use ptr::RawPtr;
 
 #[cfg(windows)]               // mingw-w32 doesn't like thread_local things
 #[cfg(target_os = "android")] // see #10686
@@ -79,6 +80,7 @@ pub unsafe fn borrow<T>() -> Borrowed<T> {
 pub mod compiled {
     use cast;
     use option::{Option, Some, None};
+    use ptr::RawPtr;
     #[cfg(not(test))] use libc::c_void;
 
     #[cfg(test)]
@@ -177,6 +179,7 @@ pub mod native {
     use libc::c_void;
     use option::{Option, Some, None};
     use ptr;
+    use ptr::RawPtr;
     use tls = rt::thread_local_storage;
 
     static mut RT_TLS_KEY: tls::Key = -1;
diff --git a/src/libstd/rt/logging.rs b/src/libstd/rt/logging.rs
index 586d26a24e3ee..b86a9612d7061 100644
--- a/src/libstd/rt/logging.rs
+++ b/src/libstd/rt/logging.rs
@@ -8,12 +8,14 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+use container::Container;
 use from_str::from_str;
+use iter::Iterator;
 use libc::exit;
 use option::{Some, None, Option};
 use rt::crate_map::{ModEntry, CrateMap, iter_crate_map, get_crate_map};
 use str::StrSlice;
-use vec::{ImmutableVector, MutableTotalOrdVector};
+use vec::{ImmutableVector, MutableTotalOrdVector, OwnedVector};
 #[cfg(test)] use cast::transmute;
 
 struct LogDirective {
diff --git a/src/libstd/rt/mod.rs b/src/libstd/rt/mod.rs
index 050caef86ebdb..d839ef62af962 100644
--- a/src/libstd/rt/mod.rs
+++ b/src/libstd/rt/mod.rs
@@ -58,14 +58,9 @@ Several modules in `core` are clients of `rt`:
 #[allow(missing_doc)];
 
 use any::Any;
-use clone::Clone;
-use container::Container;
-use iter::Iterator;
 use option::Option;
-use ptr::RawPtr;
 use result::Result;
 use task::TaskOpts;
-use vec::{OwnedVector, MutableVector, ImmutableVector};
 
 use self::task::{Task, BlockedTask};
 
diff --git a/src/libstd/rt/task.rs b/src/libstd/rt/task.rs
index 2d9105d676618..6c94f23778931 100644
--- a/src/libstd/rt/task.rs
+++ b/src/libstd/rt/task.rs
@@ -17,6 +17,7 @@ use any::AnyOwnExt;
 use borrow;
 use cast;
 use cleanup;
+use clone::Clone;
 use io::Writer;
 use iter::{Iterator, Take};
 use local_data;
diff --git a/src/libstd/rt/unwind.rs b/src/libstd/rt/unwind.rs
index cb5360200d50a..3a07e8c373b75 100644
--- a/src/libstd/rt/unwind.rs
+++ b/src/libstd/rt/unwind.rs
@@ -62,6 +62,7 @@ use kinds::Send;
 use libc::{c_void, c_char, size_t};
 use option::{Some, None, Option};
 use prelude::drop;
+use ptr::RawPtr;
 use result::{Err, Ok};
 use rt::local::Local;
 use rt::task::Task;
@@ -76,6 +77,7 @@ mod libunwind {
     //! Unwind library interface
 
     #[allow(non_camel_case_types)];
+    #[allow(dead_code)] // these are just bindings
 
     use libc::{uintptr_t, uint64_t};
 
@@ -261,7 +263,8 @@ fn rust_exception_class() -> uw::_Unwind_Exception_Class {
 //   This is achieved by overriding the return value in search phase to always
 //   say "catch!".
 
-#[cfg(not(target_arch = "arm"))]
+#[cfg(not(target_arch = "arm"), not(test))]
+#[doc(hidden)]
 pub mod eabi {
     use uw = super::libunwind;
     use libc::c_int;
@@ -277,8 +280,6 @@ pub mod eabi {
 
     #[lang="eh_personality"]
     #[no_mangle] // so we can reference it by name from middle/trans/base.rs
-    #[doc(hidden)]
-    #[cfg(not(test))]
     pub extern "C" fn rust_eh_personality(
         version: c_int,
         actions: uw::_Unwind_Action,
@@ -294,8 +295,6 @@ pub mod eabi {
     }
 
     #[no_mangle] // referenced from rust_try.ll
-    #[doc(hidden)]
-    #[cfg(not(test))]
     pub extern "C" fn rust_eh_personality_catch(
         version: c_int,
         actions: uw::_Unwind_Action,
@@ -318,7 +317,7 @@ pub mod eabi {
 
 // ARM EHABI uses a slightly different personality routine signature,
 // but otherwise works the same.
-#[cfg(target_arch = "arm")]
+#[cfg(target_arch = "arm", not(test))]
 pub mod eabi {
     use uw = super::libunwind;
     use libc::c_int;
@@ -332,8 +331,6 @@ pub mod eabi {
 
     #[lang="eh_personality"]
     #[no_mangle] // so we can reference it by name from middle/trans/base.rs
-    #[doc(hidden)]
-    #[cfg(not(test))]
     pub extern "C" fn rust_eh_personality(
         state: uw::_Unwind_State,
         ue_header: *uw::_Unwind_Exception,
@@ -346,8 +343,6 @@ pub mod eabi {
     }
 
     #[no_mangle] // referenced from rust_try.ll
-    #[doc(hidden)]
-    #[cfg(not(test))]
     pub extern "C" fn rust_eh_personality_catch(
         state: uw::_Unwind_State,
         ue_header: *uw::_Unwind_Exception,
diff --git a/src/libstd/rt/util.rs b/src/libstd/rt/util.rs
index 730a38ce8867d..ee336d7d847d5 100644
--- a/src/libstd/rt/util.rs
+++ b/src/libstd/rt/util.rs
@@ -11,11 +11,13 @@
 use container::Container;
 use fmt;
 use from_str::FromStr;
+use iter::Iterator;
 use libc;
 use option::{Some, None, Option};
 use os;
 use str::StrSlice;
 use unstable::running_on_valgrind;
+use vec::ImmutableVector;
 
 // Indicates whether we should perform expensive sanity checks, including rtassert!
 // XXX: Once the runtime matures remove the `true` below to turn off rtassert, etc.
diff --git a/src/libstd/run.rs b/src/libstd/run.rs
index 337cb744080eb..3595a7d45aca2 100644
--- a/src/libstd/run.rs
+++ b/src/libstd/run.rs
@@ -330,16 +330,15 @@ pub fn process_output(prog: &str, args: &[~str]) -> Option<ProcessOutput> {
 
 #[cfg(test)]
 mod tests {
+    use prelude::*;
     use libc::c_int;
-    use option::{Option, None, Some};
     use os;
-    use path::Path;
     use run;
     use str;
     use task::spawn;
     use unstable::running_on_valgrind;
     use io::pipe::PipeStream;
-    use io::{Writer, Reader, io_error, FileNotFound};
+    use io::{io_error, FileNotFound};
 
     #[test]
     #[cfg(not(target_os="android"))] // FIXME(#10380)
diff --git a/src/libstd/send_str.rs b/src/libstd/send_str.rs
index f10818b052df1..c8143442d6e37 100644
--- a/src/libstd/send_str.rs
+++ b/src/libstd/send_str.rs
@@ -176,14 +176,8 @@ impl IterBytes for SendStr {
 
 #[cfg(test)]
 mod tests {
-    use clone::{Clone, DeepClone};
-    use cmp::{TotalEq, Ord, TotalOrd, Equiv};
-    use cmp::Equal;
-    use container::Container;
-    use default::Default;
+    use prelude::*;
     use send_str::{SendStrOwned, SendStrStatic};
-    use str::Str;
-    use to_str::ToStr;
 
     #[test]
     fn test_send_str_traits() {
diff --git a/src/libstd/str.rs b/src/libstd/str.rs
index 230564c6bf1cb..35e188964c101 100644
--- a/src/libstd/str.rs
+++ b/src/libstd/str.rs
@@ -977,11 +977,13 @@ static TAG_CONT_U8: u8 = 128u8;
 /// Unsafe operations
 pub mod raw {
     use cast;
+    use container::Container;
     use libc;
     use ptr;
-    use str::{is_utf8, OwnedStr};
+    use ptr::RawPtr;
+    use str::{is_utf8, OwnedStr, StrSlice};
     use vec;
-    use vec::MutableVector;
+    use vec::{MutableVector, ImmutableVector, OwnedVector};
     use unstable::raw::Slice;
 
     /// Create a Rust string from a *u8 buffer of the given length
@@ -1137,10 +1139,12 @@ Section: Trait implementations
 #[cfg(not(test))]
 #[allow(missing_doc)]
 pub mod traits {
-    use ops::Add;
+    use container::Container;
     use cmp::{TotalOrd, Ordering, Less, Equal, Greater, Eq, Ord, Equiv, TotalEq};
-    use super::{Str, eq_slice};
+    use iter::Iterator;
+    use ops::Add;
     use option::{Some, None};
+    use str::{Str, StrSlice, OwnedStr, eq_slice};
 
     impl<'a> Add<&'a str,~str> for &'a str {
         #[inline]
@@ -2764,14 +2768,11 @@ impl Default for @str {
 
 #[cfg(test)]
 mod tests {
-    use container::Container;
-    use option::{None, Some, Option};
+    use iter::AdditiveIterator;
+    use prelude::*;
     use ptr;
     use str::*;
-    use vec::{Vector, ImmutableVector, CopyableVector};
-    use cmp::{TotalOrd, Less, Equal, Greater};
     use send_str::{SendStrOwned, SendStrStatic};
-    use from_str::from_str;
 
     #[test]
     fn test_eq() {
diff --git a/src/libstd/unstable/dynamic_lib.rs b/src/libstd/unstable/dynamic_lib.rs
index 0569fe32c58b3..24568fe13e552 100644
--- a/src/libstd/unstable/dynamic_lib.rs
+++ b/src/libstd/unstable/dynamic_lib.rs
@@ -199,11 +199,12 @@ pub mod dl {
 
 #[cfg(target_os = "win32")]
 pub mod dl {
-    use os;
     use libc;
+    use os;
+    use path::GenericPath;
     use path;
     use ptr;
-    use result::*;
+    use result::{Ok, Err, Result};
 
     pub unsafe fn open_external(filename: &path::Path) -> *libc::c_void {
         os::win32::as_utf16_p(filename.as_str().unwrap(), |raw_name| {
diff --git a/src/libstd/unstable/mutex.rs b/src/libstd/unstable/mutex.rs
index e11557ff337c2..4d12435e01a90 100644
--- a/src/libstd/unstable/mutex.rs
+++ b/src/libstd/unstable/mutex.rs
@@ -167,6 +167,7 @@ mod imp {
     use libc::c_void;
     use libc;
     use ptr;
+    use ptr::RawPtr;
 
     type pthread_mutex_t = libc::c_void;
     type pthread_mutexattr_t = libc::c_void;
@@ -248,6 +249,8 @@ mod imp {
     use libc;
     use libc::{HANDLE, BOOL, LPSECURITY_ATTRIBUTES, c_void, DWORD, LPCSTR};
     use ptr;
+    use ptr::RawPtr;
+
     type LPCRITICAL_SECTION = *c_void;
     static SPIN_COUNT: DWORD = 4000;
 
diff --git a/src/libstd/unstable/stack.rs b/src/libstd/unstable/stack.rs
index d6cd690eaa9db..66a9d18aaec80 100644
--- a/src/libstd/unstable/stack.rs
+++ b/src/libstd/unstable/stack.rs
@@ -36,9 +36,10 @@ static RED_ZONE: uint = 20 * 1024;
                   //   irrelevant for documentation purposes.
 #[cfg(not(test))] // in testing, use the original libstd's version
 pub extern "C" fn rust_stack_exhausted() {
-    use rt::task::Task;
     use option::None;
     use rt::local::Local;
+    use rt::task::Task;
+    use str::Str;
     use unstable::intrinsics;
 
     unsafe {
diff --git a/src/libstd/util.rs b/src/libstd/util.rs
index 6c0424b50e108..06c7923bfeda1 100644
--- a/src/libstd/util.rs
+++ b/src/libstd/util.rs
@@ -78,10 +78,7 @@ impl Void {
 #[cfg(test)]
 mod tests {
     use super::*;
-
-    use clone::Clone;
-    use ops::Drop;
-    use option::{None, Some};
+    use prelude::*;
     use mem::size_of;
 
     #[test]
diff --git a/src/libstd/vec.rs b/src/libstd/vec.rs
index 450cf1a4ef25c..632490d62adc6 100644
--- a/src/libstd/vec.rs
+++ b/src/libstd/vec.rs
@@ -611,6 +611,7 @@ impl<'a, T> RandomAccessIterator<&'a [T]> for ChunkIter<'a, T> {
 pub mod traits {
     use super::*;
 
+    use container::Container;
     use clone::Clone;
     use cmp::{Eq, Ord, TotalEq, TotalOrd, Ordering, Equiv};
     use iter::order;
@@ -2520,7 +2521,7 @@ pub unsafe fn from_buf<T>(ptr: *T, elts: uint) -> ~[T] {
 pub mod raw {
     use cast;
     use ptr;
-    use vec::{with_capacity, MutableVector};
+    use vec::{with_capacity, MutableVector, OwnedVector};
     use unstable::raw::Slice;
 
     /**
@@ -2599,8 +2600,9 @@ pub mod raw {
 /// Operations on `[u8]`.
 pub mod bytes {
     use container::Container;
-    use vec::MutableVector;
+    use vec::{MutableVector, OwnedVector, ImmutableVector};
     use ptr;
+    use ptr::RawPtr;
 
     /// A trait for operations on mutable `[u8]`s.
     pub trait MutableByteVector {
@@ -2968,10 +2970,10 @@ impl<A> Extendable<A> for ~[A] {
 
 #[cfg(test)]
 mod tests {
+    use prelude::*;
     use mem;
     use vec::*;
     use cmp::*;
-    use prelude::*;
     use rand::{Rng, task_rng};
 
     fn square(n: uint) -> uint { n * n }
@@ -4452,13 +4454,11 @@ mod tests {
 #[cfg(test)]
 mod bench {
     use extra::test::BenchHarness;
-    use iter::range;
-    use vec;
-    use vec::{VectorVector, MutableTotalOrdVector};
-    use option::*;
+    use mem;
+    use prelude::*;
     use ptr;
     use rand::{weak_rng, Rng};
-    use mem;
+    use vec;
 
     #[bench]
     fn iterator(bh: &mut BenchHarness) {
diff --git a/src/libsyntax/ext/deriving/mod.rs b/src/libsyntax/ext/deriving/mod.rs
index 1e8b79c8f350b..1529fbae7e1f2 100644
--- a/src/libsyntax/ext/deriving/mod.rs
+++ b/src/libsyntax/ext/deriving/mod.rs
@@ -21,7 +21,6 @@ library.
 use ast::{enum_def, Ident, item, Generics, struct_def};
 use ast::{MetaItem, MetaList, MetaNameValue, MetaWord};
 use ext::base::ExtCtxt;
-use ext::build::AstBuilder;
 use codemap::Span;
 
 pub mod clone;
diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs
index ccffb11f73e09..fb98f766fef00 100644
--- a/src/libsyntax/ext/expand.rs
+++ b/src/libsyntax/ext/expand.rs
@@ -1109,6 +1109,7 @@ mod test {
     use codemap;
     use codemap::Spanned;
     use fold;
+    use fold::*;
     use parse;
     use parse::token::{fresh_mark, gensym, intern, ident_to_str};
     use parse::token;
diff --git a/src/test/compile-fail/issue-10465.rs b/src/test/compile-fail/issue-10465.rs
new file mode 100644
index 0000000000000..a5e374a7a8b19
--- /dev/null
+++ b/src/test/compile-fail/issue-10465.rs
@@ -0,0 +1,33 @@
+// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+pub mod a {
+    pub trait A {
+        fn foo(&self);
+    }
+
+}
+pub mod b {
+    use a::A;
+
+    pub struct B;
+    impl A for B { fn foo(&self) {} }
+
+    pub mod c {
+        use b::B;
+
+        fn foo(b: &B) {
+            b.foo(); //~ ERROR: does not implement any method in scope named
+        }
+    }
+
+}
+
+fn main() {}