1
Fork 0

Add let-else to AST

This commit is contained in:
Cameron Steffen 2021-06-22 13:00:58 -05:00
parent 6f388bb369
commit 89d2600d01
10 changed files with 92 additions and 26 deletions

View file

@ -454,7 +454,7 @@ impl<'a: 'ast, 'ast> Visitor<'ast> for LateResolutionVisitor<'a, '_, 'ast> {
_ => Some((
local.pat.span,
local.ty.as_ref().map(|ty| ty.span),
local.init.as_ref().map(|init| init.span),
local.kind.init().map(|init| init.span),
)),
};
let original = replace(&mut self.diagnostic_metadata.current_let_binding, local_spans);
@ -1426,7 +1426,14 @@ impl<'a: 'ast, 'b, 'ast> LateResolutionVisitor<'a, 'b, 'ast> {
walk_list!(self, visit_ty, &local.ty);
// Resolve the initializer.
walk_list!(self, visit_expr, &local.init);
if let Some((init, els)) = local.kind.init_else_opt() {
self.visit_expr(init);
// Resolve the `else` block
if let Some(els) = els {
self.visit_block(els);
}
}
// Resolve the pattern.
self.resolve_pattern_top(&local.pat, PatternSource::Let);