-
Notifications
You must be signed in to change notification settings - Fork 12.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Replaced some unwrap_or and map_or with lazy variants #82456
Changes from 2 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -481,9 +481,10 @@ impl DebugInfoMethods<'tcx> for CodegenCx<'ll, 'tcx> { | |||||
} | ||||||
|
||||||
fn get_parameter_names(cx: &CodegenCx<'_, '_>, generics: &ty::Generics) -> Vec<Symbol> { | ||||||
let mut names = generics | ||||||
.parent | ||||||
.map_or(vec![], |def_id| get_parameter_names(cx, cx.tcx.generics_of(def_id))); | ||||||
let mut names = generics.parent.map_or_else( | ||||||
|| vec![], | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
|def_id| get_parameter_names(cx, cx.tcx.generics_of(def_id)), | ||||||
); | ||||||
names.extend(generics.params.iter().map(|param| param.name)); | ||||||
names | ||||||
} | ||||||
|
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -65,8 +65,8 @@ fn search_meta_section<'a>( | |||||
while llvm::LLVMIsSectionIteratorAtEnd(of.llof, si.llsi) == False { | ||||||
let mut name_buf = None; | ||||||
let name_len = llvm::LLVMRustGetSectionName(si.llsi, &mut name_buf); | ||||||
let name = name_buf.map_or( | ||||||
String::new(), // We got a NULL ptr, ignore `name_len`. | ||||||
let name = name_buf.map_or_else( | ||||||
|| String::new(), // We got a NULL ptr, ignore `name_len`. | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
|buf| { | ||||||
String::from_utf8( | ||||||
slice::from_raw_parts(buf.as_ptr() as *const u8, name_len as usize) | ||||||
|
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -50,7 +50,7 @@ fn eval_body_using_ecx<'mir, 'tcx>( | |||||
|
||||||
let name = | ||||||
with_no_trimmed_paths(|| ty::tls::with(|tcx| tcx.def_path_str(cid.instance.def_id()))); | ||||||
let prom = cid.promoted.map_or(String::new(), |p| format!("::promoted[{:?}]", p)); | ||||||
let prom = cid.promoted.map_or_else(|| String::new(), |p| format!("::promoted[{:?}]", p)); | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
trace!("eval_body_using_ecx: pushing stack frame for global: {}{}", name, prom); | ||||||
|
||||||
ecx.push_stack_frame( | ||||||
|
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -223,7 +223,7 @@ impl<'a> Parser<'a> { | |||||
fn tokens_to_string(tokens: &[TokenType]) -> String { | ||||||
let mut i = tokens.iter(); | ||||||
// This might be a sign we need a connect method on `Iterator`. | ||||||
let b = i.next().map_or(String::new(), |t| t.to_string()); | ||||||
let b = i.next().map_or_else(|| String::new(), |t| t.to_string()); | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
i.enumerate().fold(b, |mut b, (i, a)| { | ||||||
if tokens.len() > 2 && i == tokens.len() - 2 { | ||||||
b.push_str(", or "); | ||||||
|
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -1971,65 +1971,68 @@ impl<'a, 'tcx> LifetimeContext<'a, 'tcx> { | |||||
// Therefore, we would compute `object_lifetime_defaults` to a | ||||||
// vector like `['x, 'static]`. Note that the vector only | ||||||
// includes type parameters. | ||||||
let object_lifetime_defaults = type_def_id.map_or(vec![], |def_id| { | ||||||
let in_body = { | ||||||
let mut scope = self.scope; | ||||||
loop { | ||||||
match *scope { | ||||||
Scope::Root => break false, | ||||||
|
||||||
Scope::Body { .. } => break true, | ||||||
|
||||||
Scope::Binder { s, .. } | ||||||
| Scope::Elision { s, .. } | ||||||
| Scope::ObjectLifetimeDefault { s, .. } => { | ||||||
scope = s; | ||||||
let object_lifetime_defaults = type_def_id.map_or_else( | ||||||
|| vec![], | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
|def_id| { | ||||||
let in_body = { | ||||||
let mut scope = self.scope; | ||||||
loop { | ||||||
match *scope { | ||||||
Scope::Root => break false, | ||||||
|
||||||
Scope::Body { .. } => break true, | ||||||
|
||||||
Scope::Binder { s, .. } | ||||||
| Scope::Elision { s, .. } | ||||||
| Scope::ObjectLifetimeDefault { s, .. } => { | ||||||
scope = s; | ||||||
} | ||||||
} | ||||||
} | ||||||
} | ||||||
}; | ||||||
}; | ||||||
|
||||||
let map = &self.map; | ||||||
let unsubst = if let Some(def_id) = def_id.as_local() { | ||||||
let id = self.tcx.hir().local_def_id_to_hir_id(def_id); | ||||||
&map.object_lifetime_defaults[&id] | ||||||
} else { | ||||||
let tcx = self.tcx; | ||||||
self.xcrate_object_lifetime_defaults.entry(def_id).or_insert_with(|| { | ||||||
tcx.generics_of(def_id) | ||||||
.params | ||||||
.iter() | ||||||
.filter_map(|param| match param.kind { | ||||||
GenericParamDefKind::Type { object_lifetime_default, .. } => { | ||||||
Some(object_lifetime_default) | ||||||
let map = &self.map; | ||||||
let unsubst = if let Some(def_id) = def_id.as_local() { | ||||||
let id = self.tcx.hir().local_def_id_to_hir_id(def_id); | ||||||
&map.object_lifetime_defaults[&id] | ||||||
} else { | ||||||
let tcx = self.tcx; | ||||||
self.xcrate_object_lifetime_defaults.entry(def_id).or_insert_with(|| { | ||||||
tcx.generics_of(def_id) | ||||||
.params | ||||||
.iter() | ||||||
.filter_map(|param| match param.kind { | ||||||
GenericParamDefKind::Type { object_lifetime_default, .. } => { | ||||||
Some(object_lifetime_default) | ||||||
} | ||||||
GenericParamDefKind::Lifetime | GenericParamDefKind::Const => None, | ||||||
}) | ||||||
.collect() | ||||||
}) | ||||||
}; | ||||||
debug!("visit_segment_args: unsubst={:?}", unsubst); | ||||||
unsubst | ||||||
.iter() | ||||||
.map(|set| match *set { | ||||||
Set1::Empty => { | ||||||
if in_body { | ||||||
None | ||||||
} else { | ||||||
Some(Region::Static) | ||||||
} | ||||||
GenericParamDefKind::Lifetime | GenericParamDefKind::Const => None, | ||||||
}) | ||||||
.collect() | ||||||
}) | ||||||
}; | ||||||
debug!("visit_segment_args: unsubst={:?}", unsubst); | ||||||
unsubst | ||||||
.iter() | ||||||
.map(|set| match *set { | ||||||
Set1::Empty => { | ||||||
if in_body { | ||||||
None | ||||||
} else { | ||||||
Some(Region::Static) | ||||||
} | ||||||
} | ||||||
Set1::One(r) => { | ||||||
let lifetimes = generic_args.args.iter().filter_map(|arg| match arg { | ||||||
GenericArg::Lifetime(lt) => Some(lt), | ||||||
_ => None, | ||||||
}); | ||||||
r.subst(lifetimes, map) | ||||||
} | ||||||
Set1::Many => None, | ||||||
}) | ||||||
.collect() | ||||||
}); | ||||||
Set1::One(r) => { | ||||||
let lifetimes = generic_args.args.iter().filter_map(|arg| match arg { | ||||||
GenericArg::Lifetime(lt) => Some(lt), | ||||||
_ => None, | ||||||
}); | ||||||
r.subst(lifetimes, map) | ||||||
} | ||||||
Set1::Many => None, | ||||||
}) | ||||||
.collect() | ||||||
}, | ||||||
); | ||||||
|
||||||
debug!("visit_segment_args: object_lifetime_defaults={:?}", object_lifetime_defaults); | ||||||
|
||||||
|
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -169,7 +169,7 @@ pub fn get_or_default_sysroot() -> PathBuf { | |||||
|
||||||
// Check if sysroot is found using env::args().next(), and if is not found, | ||||||
// use env::current_exe() to imply sysroot. | ||||||
from_env_args_next().unwrap_or(from_current_exe()) | ||||||
from_env_args_next().unwrap_or_else(|| from_current_exe()) | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
} | ||||||
|
||||||
// The name of the directory rustc expects libraries to be located. | ||||||
|
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -349,7 +349,7 @@ fn report_negative_positive_conflict( | |||||
E0751, | ||||||
"found both positive and negative implementation of trait `{}`{}:", | ||||||
overlap.trait_desc, | ||||||
overlap.self_desc.clone().map_or(String::new(), |ty| format!(" for type `{}`", ty)) | ||||||
overlap.self_desc.clone().map_or_else(|| String::new(), |ty| format!(" for type `{}`", ty)) | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
); | ||||||
|
||||||
match tcx.span_of_impl(negative_impl_def_id) { | ||||||
|
@@ -397,7 +397,10 @@ fn report_conflicting_impls( | |||||
let msg = format!( | ||||||
"conflicting implementations of trait `{}`{}:{}", | ||||||
overlap.trait_desc, | ||||||
overlap.self_desc.clone().map_or(String::new(), |ty| { format!(" for type `{}`", ty) }), | ||||||
overlap | ||||||
.self_desc | ||||||
.clone() | ||||||
.map_or_else(|| String::new(), |ty| { format!(" for type `{}`", ty) }), | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
match used_to_be_allowed { | ||||||
Some(FutureCompatOverlapErrorKind::Issue33140) => " (E0119)", | ||||||
_ => "", | ||||||
|
@@ -415,7 +418,9 @@ fn report_conflicting_impls( | |||||
impl_span, | ||||||
format!( | ||||||
"conflicting implementation{}", | ||||||
overlap.self_desc.map_or(String::new(), |ty| format!(" for `{}`", ty)) | ||||||
overlap | ||||||
.self_desc | ||||||
.map_or_else(|| String::new(), |ty| format!(" for `{}`", ty)) | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
), | ||||||
); | ||||||
} | ||||||
|
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -1695,7 +1695,7 @@ impl<'a, 'tcx> ProbeContext<'a, 'tcx> { | |||||
} else { | ||||||
self.fcx | ||||||
.associated_item(def_id, name, Namespace::ValueNS) | ||||||
.map_or(Vec::new(), |x| vec![x]) | ||||||
.map_or_else(|| Vec::new(), |x| vec![x]) | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
} | ||||||
} else { | ||||||
self.tcx.associated_items(def_id).in_definition_order().copied().collect() | ||||||
|
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -1062,7 +1062,10 @@ fn report_unexpected_variant_res(tcx: TyCtxt<'_>, res: Res, span: Span) { | |||||
E0533, | ||||||
"expected unit struct, unit variant or constant, found {}{}", | ||||||
res.descr(), | ||||||
tcx.sess.source_map().span_to_snippet(span).map_or(String::new(), |s| format!(" `{}`", s)), | ||||||
tcx.sess | ||||||
.source_map() | ||||||
.span_to_snippet(span) | ||||||
.map_or_else(|_| String::new(), |s| format!(" `{}`", s)), | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
You catched me here and with next 2 suggestions ) |
||||||
) | ||||||
.emit(); | ||||||
} | ||||||
|
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -879,7 +879,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> { | |||||
let sm = tcx.sess.source_map(); | ||||||
let path_str = sm | ||||||
.span_to_snippet(sm.span_until_char(pat.span, '(')) | ||||||
.map_or(String::new(), |s| format!(" `{}`", s.trim_end())); | ||||||
.map_or_else(|_| String::new(), |s| format!(" `{}`", s.trim_end())); | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
let msg = format!( | ||||||
"expected tuple struct or tuple variant, found {}{}", | ||||||
res.descr(), | ||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.