about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2014-03-20 22:10:44 -0700
committerAlex Crichton <alex@alexcrichton.com>2014-03-22 08:48:34 -0700
commit3fb1ed0e046e4208ea8a28f989d1b184143d62ce (patch)
treed6fbeef71f581f189caba5d6d479d56e19f5cf8b
parent76f0b1ad1fb314199b6db61df753d6757dee3b77 (diff)
downloadrust-3fb1ed0e046e4208ea8a28f989d1b184143d62ce.tar.gz
rust-3fb1ed0e046e4208ea8a28f989d1b184143d62ce.zip
rustc: Remove all usage of manual deref()
Favor using '*' instead
-rw-r--r--src/librustc/driver/driver.rs6
-rw-r--r--src/librustc/middle/astencode.rs3
-rw-r--r--src/librustc/middle/borrowck/check_loans.rs2
-rw-r--r--src/librustc/middle/borrowck/gather_loans/gather_moves.rs2
-rw-r--r--src/librustc/middle/borrowck/gather_loans/mod.rs2
-rw-r--r--src/librustc/middle/const_eval.rs2
-rw-r--r--src/librustc/middle/kind.rs1
-rw-r--r--src/librustc/middle/liveness.rs4
-rw-r--r--src/librustc/middle/subst.rs2
-rw-r--r--src/librustc/middle/trans/closure.rs4
-rw-r--r--src/librustc/middle/trans/common.rs2
-rw-r--r--src/librustc/middle/trans/consts.rs2
-rw-r--r--src/librustc/middle/trans/controlflow.rs2
-rw-r--r--src/librustc/middle/trans/debuginfo.rs24
-rw-r--r--src/librustc/middle/ty.rs6
-rw-r--r--src/librustc/middle/typeck/check/method.rs2
-rw-r--r--src/librustc/middle/typeck/check/mod.rs4
-rw-r--r--src/librustc/middle/typeck/check/vtable.rs7
-rw-r--r--src/librustc/middle/typeck/collect.rs6
-rw-r--r--src/librustdoc/clean.rs2
-rw-r--r--src/librustuv/idle.rs6
-rw-r--r--src/libserialize/serialize.rs2
-rw-r--r--src/libstd/hash/mod.rs3
-rw-r--r--src/libstd/option.rs4
-rw-r--r--src/libstd/rc.rs25
-rw-r--r--src/test/compile-fail/issue-7013.rs2
-rw-r--r--src/test/run-pass/self-re-assign.rs2
27 files changed, 61 insertions, 68 deletions
diff --git a/src/librustc/driver/driver.rs b/src/librustc/driver/driver.rs
index 513aa51bfe1..fb0de959489 100644
--- a/src/librustc/driver/driver.rs
+++ b/src/librustc/driver/driver.rs
@@ -543,8 +543,8 @@ fn write_out_deps(sess: &Session,
     // write Makefile-compatible dependency rules
     let files: Vec<~str> = sess.codemap().files.borrow()
                                .iter().filter_map(|fmap| {
-                                    if fmap.deref().is_real_file() {
-                                        Some(fmap.deref().name.clone())
+                                    if fmap.is_real_file() {
+                                        Some(fmap.name.clone())
                                     } else {
                                         None
                                     }
@@ -682,7 +682,7 @@ pub fn pretty_print_input(sess: Session,
     };
 
     let src_name = source_name(input);
-    let src = sess.codemap().get_filemap(src_name).deref().src.as_bytes().to_owned();
+    let src = sess.codemap().get_filemap(src_name).src.as_bytes().to_owned();
     let mut rdr = MemReader::new(src);
 
     match ppm {
diff --git a/src/librustc/middle/astencode.rs b/src/librustc/middle/astencode.rs
index e7bd536cae2..db62e6bedf0 100644
--- a/src/librustc/middle/astencode.rs
+++ b/src/librustc/middle/astencode.rs
@@ -1045,8 +1045,7 @@ fn encode_side_tables_for_id(ecx: &e::EncodeContext,
         ebml_w.tag(c::tag_table_capture_map, |ebml_w| {
             ebml_w.id(id);
             ebml_w.tag(c::tag_table_val, |ebml_w| {
-                ebml_w.emit_from_vec(cap_vars.deref().as_slice(),
-                                        |ebml_w, cap_var| {
+                ebml_w.emit_from_vec(cap_vars.as_slice(), |ebml_w, cap_var| {
                     cap_var.encode(ebml_w);
                 })
             })
diff --git a/src/librustc/middle/borrowck/check_loans.rs b/src/librustc/middle/borrowck/check_loans.rs
index 2edb18b73c7..eaef50307ef 100644
--- a/src/librustc/middle/borrowck/check_loans.rs
+++ b/src/librustc/middle/borrowck/check_loans.rs
@@ -710,7 +710,7 @@ impl<'a> CheckLoanCtxt<'a> {
     fn check_captured_variables(&self,
                                 closure_id: ast::NodeId,
                                 span: Span) {
-        for cap_var in self.bccx.capture_map.get(&closure_id).deref().iter() {
+        for cap_var in self.bccx.capture_map.get(&closure_id).iter() {
             let var_id = ast_util::def_id_of_def(cap_var.def).node;
             let var_path = @LpVar(var_id);
             self.check_if_path_is_moved(closure_id, span,
diff --git a/src/librustc/middle/borrowck/gather_loans/gather_moves.rs b/src/librustc/middle/borrowck/gather_loans/gather_moves.rs
index 3d5ea0e89b2..d07d6a066b0 100644
--- a/src/librustc/middle/borrowck/gather_loans/gather_moves.rs
+++ b/src/librustc/middle/borrowck/gather_loans/gather_moves.rs
@@ -47,7 +47,7 @@ pub fn gather_move_from_pat(bccx: &BorrowckCtxt,
 pub fn gather_captures(bccx: &BorrowckCtxt,
                        move_data: &MoveData,
                        closure_expr: &ast::Expr) {
-    for captured_var in bccx.capture_map.get(&closure_expr.id).deref().iter() {
+    for captured_var in bccx.capture_map.get(&closure_expr.id).iter() {
         match captured_var.mode {
             moves::CapMove => {
                 let cmt = bccx.cat_captured_var(closure_expr.id,
diff --git a/src/librustc/middle/borrowck/gather_loans/mod.rs b/src/librustc/middle/borrowck/gather_loans/mod.rs
index ccf62dd11f7..be86d387b20 100644
--- a/src/librustc/middle/borrowck/gather_loans/mod.rs
+++ b/src/librustc/middle/borrowck/gather_loans/mod.rs
@@ -452,7 +452,7 @@ impl<'a> GatherLoanCtxt<'a> {
 
     fn guarantee_captures(&mut self,
                           closure_expr: &ast::Expr) {
-        for captured_var in self.bccx.capture_map.get(&closure_expr.id).deref().iter() {
+        for captured_var in self.bccx.capture_map.get(&closure_expr.id).iter() {
             match captured_var.mode {
                 moves::CapCopy | moves::CapMove => { continue; }
                 moves::CapRef => { }
diff --git a/src/librustc/middle/const_eval.rs b/src/librustc/middle/const_eval.rs
index 5a3436cf8c2..e1b34198777 100644
--- a/src/librustc/middle/const_eval.rs
+++ b/src/librustc/middle/const_eval.rs
@@ -490,7 +490,7 @@ pub fn lit_to_const(lit: &Lit) -> const_val {
     match lit.node {
         LitStr(ref s, _) => const_str((*s).clone()),
         LitBinary(ref data) => {
-            const_binary(Rc::new(data.deref().iter().map(|x| *x).collect()))
+            const_binary(Rc::new(data.iter().map(|x| *x).collect()))
         }
         LitChar(n) => const_uint(n as u64),
         LitInt(n, _) => const_int(n),
diff --git a/src/librustc/middle/kind.rs b/src/librustc/middle/kind.rs
index 2c53c729045..b4314026ab6 100644
--- a/src/librustc/middle/kind.rs
+++ b/src/librustc/middle/kind.rs
@@ -291,7 +291,6 @@ pub fn check_expr(cx: &mut Context, e: &Expr) {
                 }
               }
             };
-            let type_param_defs = type_param_defs.deref();
             if ts.len() != type_param_defs.len() {
                 // Fail earlier to make debugging easier
                 fail!("internal error: in kind::check_expr, length \
diff --git a/src/librustc/middle/liveness.rs b/src/librustc/middle/liveness.rs
index bf296b6004c..42b7260a4ae 100644
--- a/src/librustc/middle/liveness.rs
+++ b/src/librustc/middle/liveness.rs
@@ -472,7 +472,7 @@ fn visit_expr(ir: &mut IrMaps, expr: &Expr) {
         // in better error messages than just pointing at the closure
         // construction site.
         let mut call_caps = Vec::new();
-        for cv in ir.capture_map.get(&expr.id).deref().iter() {
+        for cv in ir.capture_map.get(&expr.id).iter() {
             match moves::moved_variable_node_id_from_def(cv.def) {
               Some(rv) => {
                 let cv_ln = ir.add_live_node(FreeVarNode(cv.span));
@@ -979,7 +979,7 @@ impl<'a> Liveness<'a> {
                         this.ir.tcx.sess.span_bug(expr.span, "no registered caps");
                      }
                  };
-                 caps.deref().iter().rev().fold(succ, |succ, cap| {
+                 caps.iter().rev().fold(succ, |succ, cap| {
                      this.init_from_succ(cap.ln, succ);
                      let var = this.variable(cap.var_nid, expr.span);
                      this.acc(cap.ln, var, ACC_READ | ACC_USE);
diff --git a/src/librustc/middle/subst.rs b/src/librustc/middle/subst.rs
index 0dd5c2ee10e..c6819dbc919 100644
--- a/src/librustc/middle/subst.rs
+++ b/src/librustc/middle/subst.rs
@@ -141,7 +141,7 @@ impl<T:Subst> Subst for Rc<T> {
     fn subst_spanned(&self, tcx: &ty::ctxt,
                      substs: &ty::substs,
                      span: Option<Span>) -> Rc<T> {
-        Rc::new(self.deref().subst_spanned(tcx, substs, span))
+        Rc::new((**self).subst_spanned(tcx, substs, span))
     }
 }
 
diff --git a/src/librustc/middle/trans/closure.rs b/src/librustc/middle/trans/closure.rs
index 894d6e4e6f9..fb8f6d4df29 100644
--- a/src/librustc/middle/trans/closure.rs
+++ b/src/librustc/middle/trans/closure.rs
@@ -394,11 +394,11 @@ pub fn trans_expr_fn<'a>(
 
     let cap_vars = ccx.maps.capture_map.borrow().get_copy(&id);
     let ClosureResult {llbox, cdata_ty, bcx} =
-        build_closure(bcx, cap_vars.deref().as_slice(), sigil);
+        build_closure(bcx, cap_vars.as_slice(), sigil);
     trans_closure(ccx, decl, body, llfn,
                   bcx.fcx.param_substs, id,
                   [], ty::ty_fn_ret(fty),
-                  |bcx| load_environment(bcx, cdata_ty, cap_vars.deref().as_slice(), sigil));
+                  |bcx| load_environment(bcx, cdata_ty, cap_vars.as_slice(), sigil));
     fill_fn_pair(bcx, dest_addr, llfn, llbox);
 
     bcx
diff --git a/src/librustc/middle/trans/common.rs b/src/librustc/middle/trans/common.rs
index 6c8fa0e5086..b5b68a521a8 100644
--- a/src/librustc/middle/trans/common.rs
+++ b/src/librustc/middle/trans/common.rs
@@ -937,7 +937,7 @@ pub fn filename_and_line_num_from_span(bcx: &Block, span: Span)
                                        -> (ValueRef, ValueRef) {
     let loc = bcx.sess().codemap().lookup_char_pos(span.lo);
     let filename_cstr = C_cstr(bcx.ccx(),
-                               token::intern_and_get_ident(loc.file.deref().name));
+                               token::intern_and_get_ident(loc.file.name));
     let filename = build::PointerCast(bcx, filename_cstr, Type::i8p(bcx.ccx()));
     let line = C_int(bcx.ccx(), loc.line as int);
     (filename, line)
diff --git a/src/librustc/middle/trans/consts.rs b/src/librustc/middle/trans/consts.rs
index 2415a901213..fcc645a01d4 100644
--- a/src/librustc/middle/trans/consts.rs
+++ b/src/librustc/middle/trans/consts.rs
@@ -77,7 +77,7 @@ pub fn const_lit(cx: &CrateContext, e: &ast::Expr, lit: ast::Lit)
         ast::LitBool(b) => C_bool(cx, b),
         ast::LitNil => C_nil(cx),
         ast::LitStr(ref s, _) => C_str_slice(cx, (*s).clone()),
-        ast::LitBinary(ref data) => C_binary_slice(cx, data.deref().as_slice()),
+        ast::LitBinary(ref data) => C_binary_slice(cx, data.as_slice()),
     }
 }
 
diff --git a/src/librustc/middle/trans/controlflow.rs b/src/librustc/middle/trans/controlflow.rs
index 489405459ae..8e55319013b 100644
--- a/src/librustc/middle/trans/controlflow.rs
+++ b/src/librustc/middle/trans/controlflow.rs
@@ -334,7 +334,7 @@ pub fn trans_fail<'a>(
     let v_fail_str = C_cstr(ccx, fail_str);
     let _icx = push_ctxt("trans_fail_value");
     let loc = bcx.sess().codemap().lookup_char_pos(sp.lo);
-    let v_filename = C_cstr(ccx, token::intern_and_get_ident(loc.file.deref().name));
+    let v_filename = C_cstr(ccx, token::intern_and_get_ident(loc.file.name));
     let v_line = loc.line as int;
     let v_str = PointerCast(bcx, v_fail_str, Type::i8p(ccx));
     let v_filename = PointerCast(bcx, v_filename, Type::i8p(ccx));
diff --git a/src/librustc/middle/trans/debuginfo.rs b/src/librustc/middle/trans/debuginfo.rs
index 1458e9e7f39..9f5959e05de 100644
--- a/src/librustc/middle/trans/debuginfo.rs
+++ b/src/librustc/middle/trans/debuginfo.rs
@@ -610,7 +610,7 @@ pub fn create_function_debug_context(cx: &CrateContext,
     }
 
     let loc = span_start(cx, span);
-    let file_metadata = file_metadata(cx, loc.file.deref().name);
+    let file_metadata = file_metadata(cx, loc.file.name);
 
     let function_type_metadata = unsafe {
         let fn_signature = get_function_signature(cx, fn_ast_id, fn_decl, param_substs, span);
@@ -930,7 +930,7 @@ fn declare_local(bcx: &Block,
                  span: Span) {
     let cx: &CrateContext = bcx.ccx();
 
-    let filename = span_start(cx, span).file.deref().name.clone();
+    let filename = span_start(cx, span).file.name.clone();
     let file_metadata = file_metadata(cx, filename);
 
     let name = token::get_ident(variable_ident);
@@ -1181,7 +1181,7 @@ fn prepare_struct_metadata(cx: &CrateContext,
 
     let (containing_scope, definition_span) = get_namespace_and_span_for_item(cx, def_id);
 
-    let file_name = span_start(cx, definition_span).file.deref().name.clone();
+    let file_name = span_start(cx, definition_span).file.name.clone();
     let file_metadata = file_metadata(cx, file_name);
 
     let struct_metadata_stub = create_struct_stub(cx,
@@ -1276,7 +1276,7 @@ fn prepare_tuple_metadata(cx: &CrateContext,
     let tuple_llvm_type = type_of::type_of(cx, tuple_type);
 
     let loc = span_start(cx, span);
-    let file_metadata = file_metadata(cx, loc.file.deref().name);
+    let file_metadata = file_metadata(cx, loc.file.name);
 
     UnfinishedMetadata {
         cache_id: cache_id_for_type(tuple_type),
@@ -1436,7 +1436,7 @@ fn prepare_enum_metadata(cx: &CrateContext,
 
     let (containing_scope, definition_span) = get_namespace_and_span_for_item(cx, enum_def_id);
     let loc = span_start(cx, definition_span);
-    let file_metadata = file_metadata(cx, loc.file.deref().name);
+    let file_metadata = file_metadata(cx, loc.file.name);
 
     // For empty enums there is an early exit. Just describe it as an empty struct with the
     // appropriate type name
@@ -1775,7 +1775,7 @@ fn boxed_type_metadata(cx: &CrateContext,
     ];
 
     let loc = span_start(cx, span);
-    let file_metadata = file_metadata(cx, loc.file.deref().name);
+    let file_metadata = file_metadata(cx, loc.file.name);
 
     return composite_type_metadata(
         cx,
@@ -1876,7 +1876,7 @@ fn vec_metadata(cx: &CrateContext,
     assert!(member_descriptions.len() == member_llvm_types.len());
 
     let loc = span_start(cx, span);
-    let file_metadata = file_metadata(cx, loc.file.deref().name);
+    let file_metadata = file_metadata(cx, loc.file.name);
 
     composite_type_metadata(
         cx,
@@ -1927,7 +1927,7 @@ fn vec_slice_metadata(cx: &CrateContext,
     assert!(member_descriptions.len() == member_llvm_types.len());
 
     let loc = span_start(cx, span);
-    let file_metadata = file_metadata(cx, loc.file.deref().name);
+    let file_metadata = file_metadata(cx, loc.file.name);
 
     return composite_type_metadata(
         cx,
@@ -1953,7 +1953,7 @@ fn subroutine_type_metadata(cx: &CrateContext,
                             span: Span)
                          -> DICompositeType {
     let loc = span_start(cx, span);
-    let file_metadata = file_metadata(cx, loc.file.deref().name);
+    let file_metadata = file_metadata(cx, loc.file.name);
 
     let mut signature_metadata: Vec<DIType> =
         Vec::with_capacity(signature.inputs.len() + 1);
@@ -1999,7 +1999,7 @@ fn trait_metadata(cx: &CrateContext,
 
     let (containing_scope, definition_span) = get_namespace_and_span_for_item(cx, def_id);
 
-    let file_name = span_start(cx, definition_span).file.deref().name.clone();
+    let file_name = span_start(cx, definition_span).file.name.clone();
     let file_metadata = file_metadata(cx, file_name);
 
     let trait_llvm_type = type_of::type_of(cx, trait_type);
@@ -2297,7 +2297,7 @@ fn populate_scope_map(cx: &CrateContext,
                                    &mut HashMap<ast::NodeId, DIScope>|) {
         // Create a new lexical scope and push it onto the stack
         let loc = cx.sess().codemap().lookup_char_pos(scope_span.lo);
-        let file_metadata = file_metadata(cx, loc.file.deref().name);
+        let file_metadata = file_metadata(cx, loc.file.name);
         let parent_scope = scope_stack.last().unwrap().scope_metadata;
 
         let scope_metadata = unsafe {
@@ -2414,7 +2414,7 @@ fn populate_scope_map(cx: &CrateContext,
                     if need_new_scope {
                         // Create a new lexical scope and push it onto the stack
                         let loc = cx.sess().codemap().lookup_char_pos(pat.span.lo);
-                        let file_metadata = file_metadata(cx, loc.file.deref().name);
+                        let file_metadata = file_metadata(cx, loc.file.name);
                         let parent_scope = scope_stack.last().unwrap().scope_metadata;
 
                         let scope_metadata = unsafe {
diff --git a/src/librustc/middle/ty.rs b/src/librustc/middle/ty.rs
index 76b6c7b40fe..96d0da905b2 100644
--- a/src/librustc/middle/ty.rs
+++ b/src/librustc/middle/ty.rs
@@ -1009,13 +1009,13 @@ pub struct Generics {
 
 impl Generics {
     pub fn has_type_params(&self) -> bool {
-        !self.type_param_defs.deref().is_empty()
+        !self.type_param_defs.is_empty()
     }
     pub fn type_param_defs<'a>(&'a self) -> &'a [TypeParameterDef] {
-        self.type_param_defs.deref().as_slice()
+        self.type_param_defs.as_slice()
     }
     pub fn region_param_defs<'a>(&'a self) -> &'a [RegionParameterDef] {
-        self.region_param_defs.deref().as_slice()
+        self.region_param_defs.as_slice()
     }
 }
 
diff --git a/src/librustc/middle/typeck/check/method.rs b/src/librustc/middle/typeck/check/method.rs
index 782d208e2f9..9b623f1e78e 100644
--- a/src/librustc/middle/typeck/check/method.rs
+++ b/src/librustc/middle/typeck/check/method.rs
@@ -1110,7 +1110,7 @@ impl<'a> LookupContext<'a> {
         let m_regions =
             self.fcx.infcx().region_vars_for_defs(
                 self.span,
-                candidate.method_ty.generics.region_param_defs.deref().as_slice());
+                candidate.method_ty.generics.region_param_defs.as_slice());
         for &r in m_regions.iter() {
             all_regions.push(r);
         }
diff --git a/src/librustc/middle/typeck/check/mod.rs b/src/librustc/middle/typeck/check/mod.rs
index 256806690fb..d4fd8d43927 100644
--- a/src/librustc/middle/typeck/check/mod.rs
+++ b/src/librustc/middle/typeck/check/mod.rs
@@ -565,7 +565,7 @@ pub fn check_item(ccx: &CrateCtxt, it: &ast::Item) {
                 fn_tpt.generics.type_param_defs(),
                 [],
                 [],
-                fn_tpt.generics.region_param_defs.deref().as_slice(),
+                fn_tpt.generics.region_param_defs.as_slice(),
                 body.id);
 
         check_bare_fn(ccx, decl, body, it.id, fn_tpt.ty, param_env);
@@ -3698,7 +3698,7 @@ pub fn instantiate_path(fcx: &FnCtxt,
                         nsupplied = num_supplied_regions));
         }
 
-        fcx.infcx().region_vars_for_defs(span, tpt.generics.region_param_defs.deref().as_slice())
+        fcx.infcx().region_vars_for_defs(span, tpt.generics.region_param_defs.as_slice())
     };
     let regions = ty::NonerasedRegions(regions);
 
diff --git a/src/librustc/middle/typeck/check/vtable.rs b/src/librustc/middle/typeck/check/vtable.rs
index 320adcac577..29f481f9c04 100644
--- a/src/librustc/middle/typeck/check/vtable.rs
+++ b/src/librustc/middle/typeck/check/vtable.rs
@@ -666,12 +666,11 @@ pub fn early_resolve_expr(ex: &ast::Expr, fcx: &FnCtxt, is_early: bool) {
             debug!("vtable resolution on parameter bounds for method call {}",
                    ex.repr(fcx.tcx()));
             let type_param_defs = ty::method_call_type_param_defs(cx.tcx, method.origin);
-            if has_trait_bounds(type_param_defs.deref().as_slice()) {
+            if has_trait_bounds(type_param_defs.as_slice()) {
                 let substs = fcx.method_ty_substs(ex.id);
                 let vcx = fcx.vtable_context();
                 let vtbls = lookup_vtables(&vcx, ex.span,
-                                           type_param_defs.deref()
-                                                          .as_slice(),
+                                           type_param_defs.as_slice(),
                                            &substs, is_early);
                 if !is_early {
                     insert_vtables(fcx, ex.id, vtbls);
@@ -780,7 +779,7 @@ pub fn resolve_impl(tcx: &ty::ctxt,
 pub fn trans_resolve_method(tcx: &ty::ctxt, id: ast::NodeId,
                             substs: &ty::substs) -> Option<vtable_res> {
     let generics = ty::lookup_item_type(tcx, ast_util::local_def(id)).generics;
-    let type_param_defs = generics.type_param_defs.deref();
+    let type_param_defs = &*generics.type_param_defs;
     if has_trait_bounds(type_param_defs.as_slice()) {
         let vcx = VtableContext {
             infcx: &infer::new_infer_ctxt(tcx),
diff --git a/src/librustc/middle/typeck/collect.rs b/src/librustc/middle/typeck/collect.rs
index 8e074149b37..fe066ddeda9 100644
--- a/src/librustc/middle/typeck/collect.rs
+++ b/src/librustc/middle/typeck/collect.rs
@@ -338,8 +338,7 @@ pub fn ensure_trait_methods(ccx: &CrateCtxt, trait_id: ast::NodeId) {
         let mut new_type_param_defs = Vec::new();
         let substd_type_param_defs =
             trait_ty_generics.type_param_defs.subst(tcx, &substs);
-        new_type_param_defs.push_all(substd_type_param_defs.deref()
-                                                           .as_slice());
+        new_type_param_defs.push_all(substd_type_param_defs.as_slice());
 
         // add in the "self" type parameter
         let self_trait_def = get_trait_def(ccx, local_def(trait_id));
@@ -356,8 +355,7 @@ pub fn ensure_trait_methods(ccx: &CrateCtxt, trait_id: ast::NodeId) {
 
         // add in the type parameters from the method
         let substd_type_param_defs = m.generics.type_param_defs.subst(tcx, &substs);
-        new_type_param_defs.push_all(substd_type_param_defs.deref()
-                                                           .as_slice());
+        new_type_param_defs.push_all(substd_type_param_defs.as_slice());
 
         debug!("static method {} type_param_defs={} ty={}, substs={}",
                m.def_id.repr(tcx),
diff --git a/src/librustdoc/clean.rs b/src/librustdoc/clean.rs
index 05f6db8cc45..b0554c21bf9 100644
--- a/src/librustdoc/clean.rs
+++ b/src/librustdoc/clean.rs
@@ -1181,7 +1181,7 @@ impl ToSource for syntax::codemap::Span {
 fn lit_to_str(lit: &ast::Lit) -> ~str {
     match lit.node {
         ast::LitStr(ref st, _) => st.get().to_owned(),
-        ast::LitBinary(ref data) => format!("{:?}", data.deref().as_slice()),
+        ast::LitBinary(ref data) => format!("{:?}", data.as_slice()),
         ast::LitChar(c) => ~"'" + std::char::from_u32(c).unwrap().to_str() + "'",
         ast::LitInt(i, _t) => i.to_str(),
         ast::LitUint(u, _t) => u.to_str(),
diff --git a/src/librustuv/idle.rs b/src/librustuv/idle.rs
index a6c0a7b829a..bc28c5e109e 100644
--- a/src/librustuv/idle.rs
+++ b/src/librustuv/idle.rs
@@ -113,7 +113,7 @@ mod test {
         fn call(&mut self) {
             let task = match *self {
                 MyCallback(ref rc, n) => {
-                    let mut slot = rc.deref().borrow_mut();
+                    let mut slot = rc.borrow_mut();
                     match *slot.get() {
                         (ref mut task, ref mut val) => {
                             *val = n;
@@ -140,7 +140,7 @@ mod test {
     fn sleep(chan: &Chan) -> uint {
         let task: ~Task = Local::take();
         task.deschedule(1, |task| {
-            let mut slot = chan.deref().borrow_mut();
+            let mut slot = chan.borrow_mut();
             match *slot.get() {
                 (ref mut slot, _) => {
                     assert!(slot.is_none());
@@ -150,7 +150,7 @@ mod test {
             Ok(())
         });
 
-        let slot = chan.deref().borrow();
+        let slot = chan.borrow();
         match *slot.get() { (_, n) => n }
     }
 
diff --git a/src/libserialize/serialize.rs b/src/libserialize/serialize.rs
index 60de03a7b43..ca8c564f9f5 100644
--- a/src/libserialize/serialize.rs
+++ b/src/libserialize/serialize.rs
@@ -387,7 +387,7 @@ impl<S:Encoder,T:Encodable<S>> Encodable<S> for @T {
 impl<S:Encoder,T:Encodable<S>> Encodable<S> for Rc<T> {
     #[inline]
     fn encode(&self, s: &mut S) {
-        self.deref().encode(s)
+        (**self).encode(s)
     }
 }
 
diff --git a/src/libstd/hash/mod.rs b/src/libstd/hash/mod.rs
index 3791aa38b82..dc7d5c5b9c7 100644
--- a/src/libstd/hash/mod.rs
+++ b/src/libstd/hash/mod.rs
@@ -66,7 +66,6 @@
 use container::Container;
 use io::Writer;
 use iter::Iterator;
-use ops::Deref;
 use option::{Option, Some, None};
 use rc::Rc;
 use str::{Str, StrSlice};
@@ -247,7 +246,7 @@ impl<S: Writer, T: Hash<S>> Hash<S> for @T {
 impl<S: Writer, T: Hash<S>> Hash<S> for Rc<T> {
     #[inline]
     fn hash(&self, state: &mut S) {
-        self.deref().hash(state);
+        (**self).hash(state);
     }
 }
 
diff --git a/src/libstd/option.rs b/src/libstd/option.rs
index 5f733302d6f..23363a97845 100644
--- a/src/libstd/option.rs
+++ b/src/libstd/option.rs
@@ -650,7 +650,7 @@ mod tests {
         #[unsafe_destructor]
         impl ::ops::Drop for R {
            fn drop(&mut self) {
-                let ii = self.i.deref();
+                let ii = &*self.i;
                 ii.set(ii.get() + 1);
             }
         }
@@ -667,7 +667,7 @@ mod tests {
             let opt = Some(x);
             let _y = opt.unwrap();
         }
-        assert_eq!(i.deref().get(), 1);
+        assert_eq!(i.get(), 1);
     }
 
     #[test]
diff --git a/src/libstd/rc.rs b/src/libstd/rc.rs
index 490b3068dda..8dd06cb9232 100644
--- a/src/libstd/rc.rs
+++ b/src/libstd/rc.rs
@@ -122,24 +122,23 @@ impl<T> Clone for Rc<T> {
 
 impl<T: Eq> Eq for Rc<T> {
     #[inline(always)]
-    fn eq(&self, other: &Rc<T>) -> bool { *self.deref() == *other.deref() }
-
+    fn eq(&self, other: &Rc<T>) -> bool { **self == **other }
     #[inline(always)]
-    fn ne(&self, other: &Rc<T>) -> bool { *self.deref() != *other.deref() }
+    fn ne(&self, other: &Rc<T>) -> bool { **self != **other }
 }
 
 impl<T: Ord> Ord for Rc<T> {
     #[inline(always)]
-    fn lt(&self, other: &Rc<T>) -> bool { *self.deref() < *other.deref() }
+    fn lt(&self, other: &Rc<T>) -> bool { **self < **other }
 
     #[inline(always)]
-    fn le(&self, other: &Rc<T>) -> bool { *self.deref() <= *other.deref() }
+    fn le(&self, other: &Rc<T>) -> bool { **self <= **other }
 
     #[inline(always)]
-    fn gt(&self, other: &Rc<T>) -> bool { *self.deref() > *other.deref() }
+    fn gt(&self, other: &Rc<T>) -> bool { **self > **other }
 
     #[inline(always)]
-    fn ge(&self, other: &Rc<T>) -> bool { *self.deref() >= *other.deref() }
+    fn ge(&self, other: &Rc<T>) -> bool { **self >= **other }
 }
 
 /// Weak reference to a reference-counted box
@@ -236,21 +235,21 @@ mod tests {
     #[test]
     fn test_simple() {
         let x = Rc::new(5);
-        assert_eq!(*x.deref(), 5);
+        assert_eq!(*x, 5);
     }
 
     #[test]
     fn test_simple_clone() {
         let x = Rc::new(5);
         let y = x.clone();
-        assert_eq!(*x.deref(), 5);
-        assert_eq!(*y.deref(), 5);
+        assert_eq!(*x, 5);
+        assert_eq!(*y, 5);
     }
 
     #[test]
     fn test_destructor() {
         let x = Rc::new(~5);
-        assert_eq!(**x.deref(), 5);
+        assert_eq!(**x, 5);
     }
 
     #[test]
@@ -273,7 +272,7 @@ mod tests {
         // see issue #11532
         use gc::Gc;
         let a = Rc::new(RefCell::new(Gc::new(1)));
-        assert!(a.deref().try_borrow_mut().is_some());
+        assert!(a.try_borrow_mut().is_some());
     }
 
     #[test]
@@ -284,7 +283,7 @@ mod tests {
 
         let a = Rc::new(Cycle { x: RefCell::new(None) });
         let b = a.clone().downgrade();
-        *a.deref().x.borrow_mut() = Some(b);
+        *a.x.borrow_mut() = Some(b);
 
         // hopefully we don't double-free (or leak)...
     }
diff --git a/src/test/compile-fail/issue-7013.rs b/src/test/compile-fail/issue-7013.rs
index a3354e230c6..5c84cbe00a9 100644
--- a/src/test/compile-fail/issue-7013.rs
+++ b/src/test/compile-fail/issue-7013.rs
@@ -40,7 +40,7 @@ fn main()
     //~^ ERROR cannot pack type `~B`, which does not fulfill `Send`
     let v = Rc::new(RefCell::new(a));
     let w = v.clone();
-    let b = v.deref();
+    let b = &*v;
     let mut b = b.borrow_mut();
     b.v.set(w.clone());
 }
diff --git a/src/test/run-pass/self-re-assign.rs b/src/test/run-pass/self-re-assign.rs
index cba142680df..4e1a9b665d0 100644
--- a/src/test/run-pass/self-re-assign.rs
+++ b/src/test/run-pass/self-re-assign.rs
@@ -20,5 +20,5 @@ pub fn main() {
 
    let mut x = Rc::new(3);
    x = x;
-   assert!(*x.deref() == 3);
+   assert!(*x == 3);
 }