diff options
| author | Oli Scherer <github333195615777966@oli-obk.de> | 2025-02-25 10:31:11 +0000 |
|---|---|---|
| committer | Oli Scherer <github333195615777966@oli-obk.de> | 2025-03-11 12:05:02 +0000 |
| commit | 69a1bb8bdba5ccb76a72e35a69fde1937c287386 (patch) | |
| tree | 4fa2d8632a4d03f01bf7669f4a7a0a6827b5c570 /compiler/rustc_ty_utils/src | |
| parent | 43e39260f9bc02e79891b87f346b456a069967f5 (diff) | |
| download | rust-69a1bb8bdba5ccb76a72e35a69fde1937c287386.tar.gz rust-69a1bb8bdba5ccb76a72e35a69fde1937c287386.zip | |
Error on `define_opaques` entries without any opaques actually referenced
Diffstat (limited to 'compiler/rustc_ty_utils/src')
| -rw-r--r-- | compiler/rustc_ty_utils/src/opaque_types.rs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/compiler/rustc_ty_utils/src/opaque_types.rs b/compiler/rustc_ty_utils/src/opaque_types.rs index 2d590dfdd14..a107925fb18 100644 --- a/compiler/rustc_ty_utils/src/opaque_types.rs +++ b/compiler/rustc_ty_utils/src/opaque_types.rs @@ -190,11 +190,14 @@ impl<'tcx> OpaqueTypeCollector<'tcx> { let Some(defines) = self.tcx.hir_attrs(hir_id.owner).define_opaque else { return; }; - for &define in defines { + for &(span, define) in defines { trace!(?define); let mode = std::mem::replace(&mut self.mode, CollectionMode::Taits); - // TODO: check that opaque types were introduced and error otherwise (also add tests) + let n = self.opaques.len(); super::sig_types::walk_types(self.tcx, define, self); + if n == self.opaques.len() { + self.tcx.dcx().span_err(span, "item does not contain any opaque types"); + } self.mode = mode; } // Allow using `#[define_opaque]` on assoc methods and type aliases to override the default collection mode in |
