diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2024-02-12 23:18:53 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-12 23:18:53 +0100 |
| commit | 15896bdd18dc0c5c450527d526427b637671caa7 (patch) | |
| tree | 793e03e547bd5abfa9f76df25825d93a87ccf48d /compiler/rustc_hir | |
| parent | 82fda11cc7d8745d6dd438df6f1ba2da9b50de90 (diff) | |
| parent | 87816378ab4190583df1b74bcfeacb8bc5dd4d70 (diff) | |
| download | rust-15896bdd18dc0c5c450527d526427b637671caa7.tar.gz rust-15896bdd18dc0c5c450527d526427b637671caa7.zip | |
Rollup merge of #120950 - compiler-errors:miri-async-closurs, r=RalfJung,oli-obk
Fix async closures in CTFE First commit renames `is_coroutine_or_closure` into `is_closure_like`, because `is_coroutine_or_closure_or_coroutine_closure` seems confusing and long. Second commit fixes some forgotten cases where we want to handle `TyKind::CoroutineClosure` the same as closures and coroutines. The test exercises the change to `ValidityVisitor::aggregate_field_path_elem` which is the source of #120946, but not the change to `UsedParamsNeedSubstVisitor`, though I feel like it's not that big of a deal. Let me know if you'd like for me to look into constructing a test for the latter, though I have no idea what it'd look like (we can't assert against `TooGeneric` anywhere?). Fixes #120946 r? oli-obk cc ``@RalfJung``
Diffstat (limited to 'compiler/rustc_hir')
| -rw-r--r-- | compiler/rustc_hir/src/def.rs | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/compiler/rustc_hir/src/def.rs b/compiler/rustc_hir/src/def.rs index f08ab4bfc09..23943ee28e2 100644 --- a/compiler/rustc_hir/src/def.rs +++ b/compiler/rustc_hir/src/def.rs @@ -116,6 +116,12 @@ pub enum DefKind { Impl { of_trait: bool, }, + /// A closure, coroutine, or coroutine-closure. + /// + /// These are all represented with the same `ExprKind::Closure` in the AST and HIR, + /// which makes it difficult to distinguish these during def collection. Therefore, + /// we treat them all the same, and code which needs to distinguish them can match + /// or `hir::ClosureKind` or `type_of`. Closure, } |
