From 235e7c1b4312a9c5814f8b164c4b8f3d560b5777 Mon Sep 17 00:00:00 2001 From: est31 Date: Mon, 14 May 2018 19:07:05 +0200 Subject: [PATCH] Remove LoopIdResult It's redundant as Result already implements Encodable as well as Decodable. --- src/librustc/cfg/construct.rs | 4 ++-- src/librustc/hir/intravisit.rs | 10 ++++----- src/librustc/hir/lowering.rs | 6 +++--- src/librustc/hir/mod.rs | 35 +------------------------------- src/librustc/ich/impls_hir.rs | 5 ----- src/librustc/middle/liveness.rs | 10 ++++----- src/librustc_mir/hair/cx/expr.rs | 10 ++++----- src/librustc_passes/loops.rs | 3 +-- 8 files changed, 19 insertions(+), 64 deletions(-) diff --git a/src/librustc/cfg/construct.rs b/src/librustc/cfg/construct.rs index 96be361ee8a..d8cf147e3ee 100644 --- a/src/librustc/cfg/construct.rs +++ b/src/librustc/cfg/construct.rs @@ -582,7 +582,7 @@ fn find_scope_edge(&self, scope_cf_kind: ScopeCfKind) -> (region::Scope, CFGIndex) { match destination.target_id { - hir::LoopIdResult::Ok(loop_id) => { + Ok(loop_id) => { for b in &self.breakable_block_scopes { if b.block_expr_id == self.tcx.hir.node_to_hir_id(loop_id).local_id { let scope_id = self.tcx.hir.node_to_hir_id(loop_id).local_id; @@ -603,7 +603,7 @@ fn find_scope_edge(&self, } span_bug!(expr.span, "no scope for id {}", loop_id); } - hir::LoopIdResult::Err(err) => span_bug!(expr.span, "scope error: {}", err), + Err(err) => span_bug!(expr.span, "scope error: {}", err), } } } diff --git a/src/librustc/hir/intravisit.rs b/src/librustc/hir/intravisit.rs index fb10e33ef33..1fb496cca62 100644 --- a/src/librustc/hir/intravisit.rs +++ b/src/librustc/hir/intravisit.rs @@ -1039,9 +1039,8 @@ pub fn walk_expr<'v, V: Visitor<'v>>(visitor: &mut V, expression: &'v Expr) { if let Some(ref label) = destination.label { visitor.visit_label(label); match destination.target_id { - LoopIdResult::Ok(node_id) => - visitor.visit_def_mention(Def::Label(node_id)), - LoopIdResult::Err(_) => {}, + Ok(node_id) => visitor.visit_def_mention(Def::Label(node_id)), + Err(_) => {}, }; } walk_list!(visitor, visit_expr, opt_expr); @@ -1050,9 +1049,8 @@ pub fn walk_expr<'v, V: Visitor<'v>>(visitor: &mut V, expression: &'v Expr) { if let Some(ref label) = destination.label { visitor.visit_label(label); match destination.target_id { - LoopIdResult::Ok(node_id) => - visitor.visit_def_mention(Def::Label(node_id)), - LoopIdResult::Err(_) => {}, + Ok(node_id) => visitor.visit_def_mention(Def::Label(node_id)), + Err(_) => {}, }; } } diff --git a/src/librustc/hir/lowering.rs b/src/librustc/hir/lowering.rs index c5fbf975862..d5d3746bc18 100644 --- a/src/librustc/hir/lowering.rs +++ b/src/librustc/hir/lowering.rs @@ -929,9 +929,9 @@ fn lower_loop_destination(&mut self, destination: Option<(NodeId, Label)>) -> hi match destination { Some((id, label)) => { let target_id = if let Def::Label(loop_id) = self.expect_full_def(id) { - hir::LoopIdResult::Ok(self.lower_node_id(loop_id).node_id) + Ok(self.lower_node_id(loop_id).node_id) } else { - hir::LoopIdResult::Err(hir::LoopIdError::UnresolvedLabel) + Err(hir::LoopIdError::UnresolvedLabel) }; hir::Destination { label: self.lower_label(Some(label)), @@ -3598,7 +3598,7 @@ fn lower_expr(&mut self, e: &Expr) -> hir::Expr { hir::ExprBreak( hir::Destination { label: None, - target_id: hir::LoopIdResult::Ok(catch_node), + target_id: Ok(catch_node), }, Some(from_err_expr), ), diff --git a/src/librustc/hir/mod.rs b/src/librustc/hir/mod.rs index 4ab9c493657..3f49e0bfd19 100644 --- a/src/librustc/hir/mod.rs +++ b/src/librustc/hir/mod.rs @@ -1502,39 +1502,6 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { } } -// FIXME(cramertj) this should use `Result` once master compiles w/ a vesion of Rust where -// `Result` implements `Encodable`/`Decodable` -#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug, Copy)] -pub enum LoopIdResult { - Ok(NodeId), - Err(LoopIdError), -} -impl Into> for LoopIdResult { - fn into(self) -> Result { - match self { - LoopIdResult::Ok(ok) => Ok(ok), - LoopIdResult::Err(err) => Err(err), - } - } -} -impl From> for LoopIdResult { - fn from(res: Result) -> Self { - match res { - Ok(ok) => LoopIdResult::Ok(ok), - Err(err) => LoopIdResult::Err(err), - } - } -} - -impl LoopIdResult { - pub fn ok(self) -> Option { - match self { - LoopIdResult::Ok(node_id) => Some(node_id), - LoopIdResult::Err(_) => None, - } - } -} - #[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug, Copy)] pub struct Destination { // This is `Some(_)` iff there is an explicit user-specified `label @@ -1542,7 +1509,7 @@ pub struct Destination { // These errors are caught and then reported during the diagnostics pass in // librustc_passes/loops.rs - pub target_id: LoopIdResult, + pub target_id: Result, } #[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug, Copy)] diff --git a/src/librustc/ich/impls_hir.rs b/src/librustc/ich/impls_hir.rs index daf59cafc16..6edf1b35bdd 100644 --- a/src/librustc/ich/impls_hir.rs +++ b/src/librustc/ich/impls_hir.rs @@ -656,11 +656,6 @@ fn hash_stable(&self, impl_stable_hash_for_spanned!(ast::Ident); -impl_stable_hash_for!(enum hir::LoopIdResult { - Ok(node_id), - Err(loop_id_error) -}); - impl_stable_hash_for!(enum hir::LoopIdError { OutsideLoopScope, UnlabeledCfInWhileCondition, diff --git a/src/librustc/middle/liveness.rs b/src/librustc/middle/liveness.rs index a9436da5a3b..2b1663bed2f 100644 --- a/src/librustc/middle/liveness.rs +++ b/src/librustc/middle/liveness.rs @@ -1051,9 +1051,8 @@ fn propagate_through_expr(&mut self, expr: &Expr, succ: LiveNode) hir::ExprBreak(label, ref opt_expr) => { // Find which label this break jumps to let target = match label.target_id { - hir::LoopIdResult::Ok(node_id) => self.break_ln.get(&node_id), - hir::LoopIdResult::Err(err) => - span_bug!(expr.span, "loop scope error: {}", err), + Ok(node_id) => self.break_ln.get(&node_id), + Err(err) => span_bug!(expr.span, "loop scope error: {}", err), }.map(|x| *x); // Now that we know the label we're going to, @@ -1068,9 +1067,8 @@ fn propagate_through_expr(&mut self, expr: &Expr, succ: LiveNode) hir::ExprAgain(label) => { // Find which label this expr continues to let sc = match label.target_id { - hir::LoopIdResult::Ok(node_id) => node_id, - hir::LoopIdResult::Err(err) => - span_bug!(expr.span, "loop scope error: {}", err), + Ok(node_id) => node_id, + Err(err) => span_bug!(expr.span, "loop scope error: {}", err), }; // Now that we know the label we're going to, diff --git a/src/librustc_mir/hair/cx/expr.rs b/src/librustc_mir/hair/cx/expr.rs index 50096a7a79e..3e432d84c69 100644 --- a/src/librustc_mir/hair/cx/expr.rs +++ b/src/librustc_mir/hair/cx/expr.rs @@ -536,21 +536,19 @@ fn make_mirror_unadjusted<'a, 'gcx, 'tcx>(cx: &mut Cx<'a, 'gcx, 'tcx>, hir::ExprRet(ref v) => ExprKind::Return { value: v.to_ref() }, hir::ExprBreak(dest, ref value) => { match dest.target_id { - hir::LoopIdResult::Ok(target_id) => ExprKind::Break { + Ok(target_id) => ExprKind::Break { label: region::Scope::Node(cx.tcx.hir.node_to_hir_id(target_id).local_id), value: value.to_ref(), }, - hir::LoopIdResult::Err(err) => - bug!("invalid loop id for break: {}", err) + Err(err) => bug!("invalid loop id for break: {}", err) } } hir::ExprAgain(dest) => { match dest.target_id { - hir::LoopIdResult::Ok(loop_id) => ExprKind::Continue { + Ok(loop_id) => ExprKind::Continue { label: region::Scope::Node(cx.tcx.hir.node_to_hir_id(loop_id).local_id), }, - hir::LoopIdResult::Err(err) => - bug!("invalid loop id for continue: {}", err) + Err(err) => bug!("invalid loop id for continue: {}", err) } } hir::ExprMatch(ref discr, ref arms, _) => { diff --git a/src/librustc_passes/loops.rs b/src/librustc_passes/loops.rs index aebffbbb0b4..81299f4ba9f 100644 --- a/src/librustc_passes/loops.rs +++ b/src/librustc_passes/loops.rs @@ -133,8 +133,7 @@ fn visit_expr(&mut self, e: &'hir hir::Expr) { self.require_loop("break", e.span); } hir::ExprAgain(label) => { - if let hir::LoopIdResult::Err( - hir::LoopIdError::UnlabeledCfInWhileCondition) = label.target_id { + if let Err(hir::LoopIdError::UnlabeledCfInWhileCondition) = label.target_id { self.emit_unlabled_cf_in_while_condition(e.span, "continue"); } self.require_loop("continue", e.span) -- 2.44.0