about summary refs log tree commit diff
path: root/src/libsyntax/parse
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2018-10-20 11:22:48 +0000
committerbors <bors@rust-lang.org>2018-10-20 11:22:48 +0000
commitca2639e82ec4a18d7359efbfb555ea69dd644c97 (patch)
tree3dfa59589214b0157714150a785dd9cc4ccdc240 /src/libsyntax/parse
parent94273f4d8e463cac45486328294bb1c2bbc10170 (diff)
parentd28aed6dc45ffccc790469cb04f3f775ddb2283a (diff)
downloadrust-ca2639e82ec4a18d7359efbfb555ea69dd644c97.tar.gz
rust-ca2639e82ec4a18d7359efbfb555ea69dd644c97.zip
Auto merge of #55014 - ljedrz:lazyboye_unwraps, r=matthewjasper
Prefer unwrap_or_else to unwrap_or in case of function calls/allocations

The contents of `unwrap_or` are evaluated eagerly, so it's not a good pick in case of function calls and allocations. This PR also changes a few `unwrap_or`s with `unwrap_or_default`.

An added bonus is that in some cases this change also reveals if the object it's called on is an `Option` or a `Result` (based on whether the closure takes an argument).
Diffstat (limited to 'src/libsyntax/parse')
-rw-r--r--src/libsyntax/parse/parser.rs2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index c7089a295fc..9c47589a0bd 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -3228,7 +3228,7 @@ impl<'a> Parser<'a> {
                         }));
 
                         let expr_str = self.sess.source_map().span_to_snippet(expr.span)
-                                                .unwrap_or(pprust::expr_to_string(&expr));
+                                                .unwrap_or_else(|_| pprust::expr_to_string(&expr));
                         err.span_suggestion_with_applicability(
                             expr.span,
                             &format!("try {} the cast value", op_verb),