Auto merge of #78508 - wesleywiser:optimize_visit_scopes, r=petrochenkov
[resolve] Use `unwrap_or_else` instead of `unwrap_or` in a hot path
This improves the performance of the `resolve_crate` function by 30% for
a very large single file crate with auto-generated C bindings.
cc `@rylev`
diff --git a/compiler/rustc_resolve/src/lib.rs b/compiler/rustc_resolve/src/lib.rs
index b12e516..902ee5f 100644
--- a/compiler/rustc_resolve/src/lib.rs
+++ b/compiler/rustc_resolve/src/lib.rs
@@ -1725,10 +1725,9 @@
Scope::MacroRules(binding.parent_macro_rules_scope)
}
MacroRulesScope::Invocation(invoc_id) => Scope::MacroRules(
- self.output_macro_rules_scopes
- .get(&invoc_id)
- .cloned()
- .unwrap_or(self.invocation_parent_scopes[&invoc_id].macro_rules),
+ self.output_macro_rules_scopes.get(&invoc_id).cloned().unwrap_or_else(
+ || self.invocation_parent_scopes[&invoc_id].macro_rules,
+ ),
),
MacroRulesScope::Empty => Scope::Module(module),
},