Skip to content

Commit

Permalink
Replace walk with visit so we dont skip outermost expr kind in def co…
Browse files Browse the repository at this point in the history
…llector
  • Loading branch information
compiler-errors committed Sep 1, 2024
1 parent 1a1cc05 commit 7ab44cd
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 1 deletion.
2 changes: 1 addition & 1 deletion compiler/rustc_resolve/src/def_collector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ impl<'a, 'b, 'tcx> visit::Visitor<'a> for DefCollector<'a, 'b, 'tcx> {
// we must create two defs.
let coroutine_def =
self.create_def(coroutine_kind.closure_id(), kw::Empty, DefKind::Closure, span);
self.with_parent(coroutine_def, |this| visit::walk_expr(this, body));
self.with_parent(coroutine_def, |this| this.visit_expr(body));
}
_ => visit::walk_fn(self, fn_kind),
}
Expand Down
12 changes: 12 additions & 0 deletions tests/ui/async-await/async-closures/mac-body.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
//@ edition: 2021
//@ check-pass

#![feature(async_closure)]

// Make sure we don't ICE if an async closure has a macro body.
// This happened because we were calling walk instead of visit
// in the def collector, oops!

fn main() {
let _ = async || println!();
}

0 comments on commit 7ab44cd

Please sign in to comment.