diff options
| author | Michael Goulet <michael@errs.io> | 2024-06-20 12:17:42 -0400 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2024-06-24 12:03:09 -0400 |
| commit | 6521c3971d0818ab37f27f36f2eb99de420c780f (patch) | |
| tree | 84d60a479b7024a868518e3dce3d89b1ed758849 /compiler/rustc_ast_lowering/src/lib.rs | |
| parent | dd557d8c3720c82c488d6e2af3b7e19025f2473a (diff) | |
| download | rust-6521c3971d0818ab37f27f36f2eb99de420c780f.tar.gz rust-6521c3971d0818ab37f27f36f2eb99de420c780f.zip | |
Deny use<> for RPITITs
Diffstat (limited to 'compiler/rustc_ast_lowering/src/lib.rs')
| -rw-r--r-- | compiler/rustc_ast_lowering/src/lib.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/compiler/rustc_ast_lowering/src/lib.rs b/compiler/rustc_ast_lowering/src/lib.rs index da8682d3d09..0a06304fcec 100644 --- a/compiler/rustc_ast_lowering/src/lib.rs +++ b/compiler/rustc_ast_lowering/src/lib.rs @@ -1594,6 +1594,26 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> { }; debug!(?captured_lifetimes_to_duplicate); + match fn_kind { + // Deny `use<>` on RPITIT in trait/trait-impl for now. + Some(FnDeclKind::Trait | FnDeclKind::Impl) => { + if let Some(span) = bounds.iter().find_map(|bound| match *bound { + ast::GenericBound::Use(_, span) => Some(span), + _ => None, + }) { + self.tcx.dcx().emit_err(errors::NoPreciseCapturesOnRpitit { span }); + } + } + None + | Some( + FnDeclKind::Fn + | FnDeclKind::Inherent + | FnDeclKind::ExternFn + | FnDeclKind::Closure + | FnDeclKind::Pointer, + ) => {} + } + self.lower_opaque_inner( opaque_ty_node_id, origin, |
