lazily calls some fns

This commit is contained in:
klensy 2021-03-26 22:32:37 +03:00
parent e423058751
commit 229d199994
7 changed files with 14 additions and 13 deletions

View file

@ -493,7 +493,7 @@ impl DiagnosticSpanLine {
h_end: usize, h_end: usize,
) -> DiagnosticSpanLine { ) -> DiagnosticSpanLine {
DiagnosticSpanLine { DiagnosticSpanLine {
text: sf.get_line(index).map_or(String::new(), |l| l.into_owned()), text: sf.get_line(index).map_or_else(String::new, |l| l.into_owned()),
highlight_start: h_start, highlight_start: h_start,
highlight_end: h_end, highlight_end: h_end,
} }

View file

@ -216,9 +216,10 @@ impl<'tcx> InstanceDef<'tcx> {
// drops of `Option::None` before LTO. We also respect the intent of // drops of `Option::None` before LTO. We also respect the intent of
// `#[inline]` on `Drop::drop` implementations. // `#[inline]` on `Drop::drop` implementations.
return ty.ty_adt_def().map_or(true, |adt_def| { return ty.ty_adt_def().map_or(true, |adt_def| {
adt_def.destructor(tcx).map_or(adt_def.is_enum(), |dtor| { adt_def.destructor(tcx).map_or_else(
tcx.codegen_fn_attrs(dtor.did).requests_inline() || adt_def.is_enum(),
}) |dtor| tcx.codegen_fn_attrs(dtor.did).requests_inline(),
)
}); });
} }
tcx.codegen_fn_attrs(self.def_id()).requests_inline() tcx.codegen_fn_attrs(self.def_id()).requests_inline()

View file

@ -525,7 +525,7 @@ impl<'sess> OnDiskCache<'sess> {
) { ) {
let mut current_diagnostics = self.current_diagnostics.borrow_mut(); let mut current_diagnostics = self.current_diagnostics.borrow_mut();
let x = current_diagnostics.entry(dep_node_index).or_insert(Vec::new()); let x = current_diagnostics.entry(dep_node_index).or_default();
x.extend(Into::<Vec<_>>::into(diagnostics)); x.extend(Into::<Vec<_>>::into(diagnostics));
} }

View file

@ -157,7 +157,7 @@ impl OutlivesSuggestionBuilder {
debug!("Collected {:?}: {:?}", fr, outlived_fr); debug!("Collected {:?}: {:?}", fr, outlived_fr);
// Add to set of constraints for final help note. // Add to set of constraints for final help note.
self.constraints_to_add.entry(fr).or_insert(Vec::new()).push(outlived_fr); self.constraints_to_add.entry(fr).or_default().push(outlived_fr);
} }
/// Emit an intermediate note on the given `Diagnostic` if the involved regions are /// Emit an intermediate note on the given `Diagnostic` if the involved regions are

View file

@ -2327,7 +2327,7 @@ impl<'a: 'ast, 'b, 'ast> LateResolutionVisitor<'a, 'b, 'ast> {
ExprKind::Call(ref callee, ref arguments) => { ExprKind::Call(ref callee, ref arguments) => {
self.resolve_expr(callee, Some(expr)); self.resolve_expr(callee, Some(expr));
let const_args = self.r.legacy_const_generic_args(callee).unwrap_or(Vec::new()); let const_args = self.r.legacy_const_generic_args(callee).unwrap_or_default();
for (idx, argument) in arguments.iter().enumerate() { for (idx, argument) in arguments.iter().enumerate() {
// Constant arguments need to be treated as AnonConst since // Constant arguments need to be treated as AnonConst since
// that is how they will be later lowered to HIR. // that is how they will be later lowered to HIR.

View file

@ -184,7 +184,7 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> {
PathResult::Module(ModuleOrUniformRoot::Module(module)) => module.res(), PathResult::Module(ModuleOrUniformRoot::Module(module)) => module.res(),
_ => None, _ => None,
} }
.map_or(String::new(), |res| format!("{} ", res.descr())); .map_or_else(String::new, |res| format!("{} ", res.descr()));
(mod_prefix, format!("`{}`", Segment::names_to_string(mod_path))) (mod_prefix, format!("`{}`", Segment::names_to_string(mod_path)))
}; };
( (
@ -1042,10 +1042,10 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> {
if let Some(span) = self.def_span(def_id) { if let Some(span) = self.def_span(def_id) {
err.span_label(span, &format!("`{}` defined here", path_str)); err.span_label(span, &format!("`{}` defined here", path_str));
} }
let fields = let fields = self.r.field_names.get(&def_id).map_or_else(
self.r.field_names.get(&def_id).map_or("/* fields */".to_string(), |fields| { || "/* fields */".to_string(),
vec!["_"; fields.len()].join(", ") |fields| vec!["_"; fields.len()].join(", "),
}); );
err.span_suggestion( err.span_suggestion(
span, span,
"use the tuple variant pattern syntax instead", "use the tuple variant pattern syntax instead",

View file

@ -4,7 +4,7 @@ use std::process::ExitStatus;
#[cfg(not(unix))] #[cfg(not(unix))]
pub fn get_exit_code(status: ExitStatus) -> Result<i32, String> { pub fn get_exit_code(status: ExitStatus) -> Result<i32, String> {
status.code().ok_or("received no exit code from child process".into()) status.code().ok_or_else(|| "received no exit code from child process".into())
} }
#[cfg(unix)] #[cfg(unix)]