From 8531d581046ad782e19ee0e877ef3819a7c123ba Mon Sep 17 00:00:00 2001 From: "Zack M. Davis" Date: Mon, 13 Jun 2016 22:43:30 -0700 Subject: [PATCH] prefer `if let` to match with `None => ()` arm in some places MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Casual grepping revealed some places in the codebase (some of which antedated `if let`'s December 2014 stabilization in c200ae5a) where we were using a match with a `None => ()` arm where (in the present author's opinion) an `if let` conditional would be more readable. (Other places where matching to the unit value did seem to better express the intent were left alone.) It's likely that we don't care about making such trivial, non-functional, sheerly æsthetic changes. But if we do, this is a patch. --- src/librustc/hir/print.rs | 41 ++++++++---------- src/librustc/infer/error_reporting.rs | 11 ++--- src/librustc/middle/dead.rs | 32 ++++++-------- .../borrowck/gather_loans/gather_moves.rs | 15 +++---- src/librustc_metadata/creader.rs | 43 +++++++++---------- src/librustc_trans/base.rs | 19 ++++---- src/librustc_trans/debuginfo/metadata.rs | 5 +-- src/librustc_trans/monomorphize.rs | 9 ++-- src/libsyntax/parse/parser.rs | 21 ++++----- src/libsyntax/print/pprust.rs | 34 +++++++-------- src/libsyntax/util/interner.rs | 10 ++--- 11 files changed, 101 insertions(+), 139 deletions(-) diff --git a/src/librustc/hir/print.rs b/src/librustc/hir/print.rs index ceaf348117e17..b6b7aa6ce7de7 100644 --- a/src/librustc/hir/print.rs +++ b/src/librustc/hir/print.rs @@ -1728,12 +1728,9 @@ impl<'a> State<'a> { } } self.print_name(path1.node)?; - match *sub { - Some(ref p) => { - word(&mut self.s, "@")?; - self.print_pat(&p)?; - } - None => (), + if let Some(ref p) = *sub { + word(&mut self.s, "@")?; + self.print_pat(&p)?; } } PatKind::TupleStruct(ref path, ref elts, ddpos) => { @@ -2246,25 +2243,21 @@ impl<'a> State<'a> { Some(cm) => cm, _ => return Ok(()), }; - match self.next_comment() { - Some(ref cmnt) => { - if (*cmnt).style != comments::Trailing { - return Ok(()); - } - let span_line = cm.lookup_char_pos(span.hi); - let comment_line = cm.lookup_char_pos((*cmnt).pos); - let mut next = (*cmnt).pos + BytePos(1); - match next_pos { - None => (), - Some(p) => next = p, - } - if span.hi < (*cmnt).pos && (*cmnt).pos < next && - span_line.line == comment_line.line { - self.print_comment(cmnt)?; - self.cur_cmnt_and_lit.cur_cmnt += 1; - } + if let Some(ref cmnt) = self.next_comment() { + if (*cmnt).style != comments::Trailing { + return Ok(()); + } + let span_line = cm.lookup_char_pos(span.hi); + let comment_line = cm.lookup_char_pos((*cmnt).pos); + let mut next = (*cmnt).pos + BytePos(1); + if let Some(p) = next_pos { + next = p; + } + if span.hi < (*cmnt).pos && (*cmnt).pos < next && + span_line.line == comment_line.line { + self.print_comment(cmnt)?; + self.cur_cmnt_and_lit.cur_cmnt += 1; } - _ => (), } Ok(()) } diff --git a/src/librustc/infer/error_reporting.rs b/src/librustc/infer/error_reporting.rs index 27896b0998121..86bc4355b2d3c 100644 --- a/src/librustc/infer/error_reporting.rs +++ b/src/librustc/infer/error_reporting.rs @@ -1856,11 +1856,10 @@ fn lifetimes_in_scope<'a, 'gcx, 'tcx>(tcx: TyCtxt<'a, 'gcx, 'tcx>, }, None => None }; - if method_id_opt.is_some() { - let method_id = method_id_opt.unwrap(); + if let Some(method_id) = method_id_opt { let parent = tcx.map.get_parent(method_id); - match tcx.map.find(parent) { - Some(node) => match node { + if let Some(node) = tcx.map.find(parent) { + match node { ast_map::NodeItem(item) => match item.node { hir::ItemImpl(_, _, ref gen, _, _, _) => { taken.extend_from_slice(&gen.lifetimes); @@ -1868,8 +1867,7 @@ fn lifetimes_in_scope<'a, 'gcx, 'tcx>(tcx: TyCtxt<'a, 'gcx, 'tcx>, _ => () }, _ => () - }, - None => () + } } } return taken; @@ -1938,4 +1936,3 @@ fn name_to_dummy_lifetime(name: ast::Name) -> hir::Lifetime { span: codemap::DUMMY_SP, name: name } } - diff --git a/src/librustc/middle/dead.rs b/src/librustc/middle/dead.rs index e65074a4f07b3..17da8ddbbc30c 100644 --- a/src/librustc/middle/dead.rs +++ b/src/librustc/middle/dead.rs @@ -160,12 +160,9 @@ impl<'a, 'tcx> MarkSymbolVisitor<'a, 'tcx> { } scanned.insert(id); - match self.tcx.map.find(id) { - Some(ref node) => { - self.live_symbols.insert(id); - self.visit_node(node); - } - None => (), + if let Some(ref node) = self.tcx.map.find(id) { + self.live_symbols.insert(id); + self.visit_node(node); } } } @@ -372,9 +369,8 @@ fn create_and_seed_worklist<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, } // Seed entry point - match *tcx.sess.entry_fn.borrow() { - Some((id, _)) => worklist.push(id), - None => () + if let Some((id, _)) = *tcx.sess.entry_fn.borrow() { + worklist.push(id); } // Seed implemented trait items @@ -464,16 +460,14 @@ impl<'a, 'tcx> DeadVisitor<'a, 'tcx> { // method of a private type is used, but the type itself is never // called directly. let impl_items = self.tcx.impl_items.borrow(); - match self.tcx.inherent_impls.borrow().get(&self.tcx.map.local_def_id(id)) { - None => (), - Some(impl_list) => { - for impl_did in impl_list.iter() { - for item_did in impl_items.get(impl_did).unwrap().iter() { - if let Some(item_node_id) = - self.tcx.map.as_local_node_id(item_did.def_id()) { - if self.live_symbols.contains(&item_node_id) { - return true; - } + if let Some(impl_list) = + self.tcx.inherent_impls.borrow().get(&self.tcx.map.local_def_id(id)) { + for impl_did in impl_list.iter() { + for item_did in impl_items.get(impl_did).unwrap().iter() { + if let Some(item_node_id) = + self.tcx.map.as_local_node_id(item_did.def_id()) { + if self.live_symbols.contains(&item_node_id) { + return true; } } } diff --git a/src/librustc_borrowck/borrowck/gather_loans/gather_moves.rs b/src/librustc_borrowck/borrowck/gather_loans/gather_moves.rs index 8682661d35a84..64f35aed23f5c 100644 --- a/src/librustc_borrowck/borrowck/gather_loans/gather_moves.rs +++ b/src/librustc_borrowck/borrowck/gather_loans/gather_moves.rs @@ -122,15 +122,12 @@ fn gather_move<'a, 'tcx>(bccx: &BorrowckCtxt<'a, 'tcx>, let potentially_illegal_move = check_and_get_illegal_move_origin(bccx, &move_info.cmt); - match potentially_illegal_move { - Some(illegal_move_origin) => { - debug!("illegal_move_origin={:?}", illegal_move_origin); - let error = MoveError::with_move_info(illegal_move_origin, - move_info.span_path_opt); - move_error_collector.add_error(error); - return - } - None => () + if let Some(illegal_move_origin) = potentially_illegal_move { + debug!("illegal_move_origin={:?}", illegal_move_origin); + let error = MoveError::with_move_info(illegal_move_origin, + move_info.span_path_opt); + move_error_collector.add_error(error); + return; } match opt_loan_path(&move_info.cmt) { diff --git a/src/librustc_metadata/creader.rs b/src/librustc_metadata/creader.rs index 2025045cc8f56..8bf057095ac56 100644 --- a/src/librustc_metadata/creader.rs +++ b/src/librustc_metadata/creader.rs @@ -929,29 +929,26 @@ impl<'a> LocalCrateReader<'a> { return; } - match self.creader.extract_crate_info(i) { - Some(info) => { - let (cnum, _, _) = self.creader.resolve_crate(&None, - &info.ident, - &info.name, - None, - i.span, - PathKind::Crate, - true); - - let def_id = self.definitions.opt_local_def_id(i.id).unwrap(); - let len = self.definitions.def_path(def_id.index).data.len(); - - self.creader.update_extern_crate(cnum, - ExternCrate { - def_id: def_id, - span: i.span, - direct: true, - path_len: len, - }); - self.cstore.add_extern_mod_stmt_cnum(info.id, cnum); - } - None => () + if let Some(info) = self.creader.extract_crate_info(i) { + let (cnum, _, _) = self.creader.resolve_crate(&None, + &info.ident, + &info.name, + None, + i.span, + PathKind::Crate, + true); + + let def_id = self.definitions.opt_local_def_id(i.id).unwrap(); + let len = self.definitions.def_path(def_id.index).data.len(); + + self.creader.update_extern_crate(cnum, + ExternCrate { + def_id: def_id, + span: i.span, + direct: true, + path_len: len, + }); + self.cstore.add_extern_mod_stmt_cnum(info.id, cnum); } } ast::ItemKind::ForeignMod(ref fm) => self.process_foreign_mod(i, fm), diff --git a/src/librustc_trans/base.rs b/src/librustc_trans/base.rs index 381bd24d9a4ae..5250361cd17ae 100644 --- a/src/librustc_trans/base.rs +++ b/src/librustc_trans/base.rs @@ -2252,17 +2252,14 @@ pub fn update_linkage(ccx: &CrateContext, } fn set_global_section(ccx: &CrateContext, llval: ValueRef, i: &hir::Item) { - match attr::first_attr_value_str_by_name(&i.attrs, "link_section") { - Some(sect) => { - if contains_null(§) { - ccx.sess().fatal(&format!("Illegal null byte in link_section value: `{}`", §)); - } - unsafe { - let buf = CString::new(sect.as_bytes()).unwrap(); - llvm::LLVMSetSection(llval, buf.as_ptr()); - } - }, - None => () + if let Some(sect) = attr::first_attr_value_str_by_name(&i.attrs, "link_section") { + if contains_null(§) { + ccx.sess().fatal(&format!("Illegal null byte in link_section value: `{}`", §)); + } + unsafe { + let buf = CString::new(sect.as_bytes()).unwrap(); + llvm::LLVMSetSection(llval, buf.as_ptr()); + } } } diff --git a/src/librustc_trans/debuginfo/metadata.rs b/src/librustc_trans/debuginfo/metadata.rs index ab4860dff1510..0d13a1377b831 100644 --- a/src/librustc_trans/debuginfo/metadata.rs +++ b/src/librustc_trans/debuginfo/metadata.rs @@ -874,9 +874,8 @@ pub fn unknown_file_metadata(cx: &CrateContext) -> DIFile { } fn file_metadata_(cx: &CrateContext, key: &str, file_name: &str, work_dir: &str) -> DIFile { - match debug_context(cx).created_files.borrow().get(key) { - Some(file_metadata) => return *file_metadata, - None => () + if let Some(file_metadata) = debug_context(cx).created_files.borrow().get(key) { + return *file_metadata; } debug!("file_metadata: file_name: {}, work_dir: {}", file_name, work_dir); diff --git a/src/librustc_trans/monomorphize.rs b/src/librustc_trans/monomorphize.rs index a0355dcc66e61..dad82167a76b3 100644 --- a/src/librustc_trans/monomorphize.rs +++ b/src/librustc_trans/monomorphize.rs @@ -50,12 +50,9 @@ pub fn monomorphic_fn<'a, 'tcx>(ccx: &CrateContext<'a, 'tcx>, let mono_ty = apply_param_substs(ccx.tcx(), psubsts, &item_ty); debug!("mono_ty = {:?} (post-substitution)", mono_ty); - match ccx.instances().borrow().get(&instance) { - Some(&val) => { - debug!("leaving monomorphic fn {:?}", instance); - return (val, mono_ty); - } - None => () + if let Some(&val) = ccx.instances().borrow().get(&instance) { + debug!("leaving monomorphic fn {:?}", instance); + return (val, mono_ty); } debug!("monomorphic_fn({:?})", instance); diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 22cc20b8f8c44..341b076e7cf30 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -5430,18 +5430,15 @@ impl<'a> Parser<'a> { name: String, id_sp: Span) -> PResult<'a, (ast::ItemKind, Vec )> { let mut included_mod_stack = self.sess.included_mod_stack.borrow_mut(); - match included_mod_stack.iter().position(|p| *p == path) { - Some(i) => { - let mut err = String::from("circular modules: "); - let len = included_mod_stack.len(); - for p in &included_mod_stack[i.. len] { - err.push_str(&p.to_string_lossy()); - err.push_str(" -> "); - } - err.push_str(&path.to_string_lossy()); - return Err(self.span_fatal(id_sp, &err[..])); - } - None => () + if let Some(i) = included_mod_stack.iter().position(|p| *p == path) { + let mut err = String::from("circular modules: "); + let len = included_mod_stack.len(); + for p in &included_mod_stack[i.. len] { + err.push_str(&p.to_string_lossy()); + err.push_str(" -> "); + } + err.push_str(&path.to_string_lossy()); + return Err(self.span_fatal(id_sp, &err[..])); } included_mod_stack.push(path.clone()); drop(included_mod_stack); diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index 5b9ec924de953..8818acf9aeff0 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -2459,12 +2459,9 @@ impl<'a> State<'a> { } } self.print_ident(path1.node)?; - match *sub { - Some(ref p) => { - word(&mut self.s, "@")?; - self.print_pat(&p)?; - } - None => () + if let Some(ref p) = *sub { + word(&mut self.s, "@")?; + self.print_pat(&p)?; } } PatKind::TupleStruct(ref path, ref elts, ddpos) => { @@ -3008,20 +3005,19 @@ impl<'a> State<'a> { Some(cm) => cm, _ => return Ok(()) }; - match self.next_comment() { - Some(ref cmnt) => { - if (*cmnt).style != comments::Trailing { return Ok(()) } - let span_line = cm.lookup_char_pos(span.hi); - let comment_line = cm.lookup_char_pos((*cmnt).pos); - let mut next = (*cmnt).pos + BytePos(1); - match next_pos { None => (), Some(p) => next = p } - if span.hi < (*cmnt).pos && (*cmnt).pos < next && - span_line.line == comment_line.line { - self.print_comment(cmnt)?; - self.cur_cmnt_and_lit.cur_cmnt += 1; - } + if let Some(ref cmnt) = self.next_comment() { + if (*cmnt).style != comments::Trailing { return Ok(()) } + let span_line = cm.lookup_char_pos(span.hi); + let comment_line = cm.lookup_char_pos((*cmnt).pos); + let mut next = (*cmnt).pos + BytePos(1); + if let Some(p) = next_pos { + next = p; + } + if span.hi < (*cmnt).pos && (*cmnt).pos < next && + span_line.line == comment_line.line { + self.print_comment(cmnt)?; + self.cur_cmnt_and_lit.cur_cmnt += 1; } - _ => () } Ok(()) } diff --git a/src/libsyntax/util/interner.rs b/src/libsyntax/util/interner.rs index 8e20358027b22..7295b36af0fe9 100644 --- a/src/libsyntax/util/interner.rs +++ b/src/libsyntax/util/interner.rs @@ -47,9 +47,8 @@ impl Interner { pub fn intern(&self, val: T) -> Name { let mut map = self.map.borrow_mut(); - match (*map).get(&val) { - Some(&idx) => return idx, - None => (), + if let Some(&idx) = (*map).get(&val) { + return idx; } let mut vect = self.vect.borrow_mut(); @@ -161,9 +160,8 @@ impl StrInterner { pub fn intern(&self, val: &str) -> Name { let mut map = self.map.borrow_mut(); - match map.get(val) { - Some(&idx) => return idx, - None => (), + if let Some(&idx) = map.get(val) { + return idx; } let new_idx = Name(self.len() as u32);