From 8d3bb7eb306993430e5f5acf3e3fbf22d7a9d97f Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Mon, 22 Jul 2013 17:06:16 -0700 Subject: [PATCH] rustc: Remove some dead code from method resolution --- src/librustc/middle/typeck/check/method.rs | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/src/librustc/middle/typeck/check/method.rs b/src/librustc/middle/typeck/check/method.rs index 4a32e8bf952..8d546366846 100644 --- a/src/librustc/middle/typeck/check/method.rs +++ b/src/librustc/middle/typeck/check/method.rs @@ -194,7 +194,6 @@ pub fn do_lookup(&self, self_ty: ty::t) -> Option { self.push_inherent_candidates(self_ty); self.push_extension_candidates(); - let mut enum_dids = ~[]; let mut self_ty = self_ty; let mut autoderefs = 0; loop { @@ -236,7 +235,7 @@ pub fn do_lookup(&self, self_ty: ty::t) -> Option { } // Otherwise, perform autoderef. - match self.deref(self_ty, &mut enum_dids) { + match self.deref(self_ty) { None => { break; } Some(ty) => { self_ty = ty; @@ -248,20 +247,8 @@ pub fn do_lookup(&self, self_ty: ty::t) -> Option { self.search_for_autosliced_method(self_ty, autoderefs) } - pub fn deref(&self, ty: ty::t, enum_dids: &mut ~[ast::def_id]) + pub fn deref(&self, ty: ty::t) -> Option { - match ty::get(ty).sty { - ty_enum(did, _) => { - // Watch out for newtype'd enums like "enum t = @T". - // See discussion in typeck::check::do_autoderef(). - if enum_dids.iter().any(|x| x == &did) { - return None; - } - enum_dids.push(did); - } - _ => {} - } - match ty::deref(self.tcx(), ty, false) { None => None, Some(t) => { @@ -285,7 +272,6 @@ pub fn push_inherent_candidates(&self, self_ty: ty::t) { * we'll want to find the inherent impls for `C`. */ - let mut enum_dids = ~[]; let mut self_ty = self_ty; loop { match get(self_ty).sty { @@ -314,7 +300,7 @@ pub fn push_inherent_candidates(&self, self_ty: ty::t) { // n.b.: Generally speaking, we only loop if we hit the // fallthrough case in the match above. The exception // would be newtype enums. - self_ty = match self.deref(self_ty, &mut enum_dids) { + self_ty = match self.deref(self_ty) { None => { return; } Some(ty) => { ty } } -- GitLab