diff options
| author | Michael Goulet <michael@errs.io> | 2025-07-13 16:26:13 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2025-07-13 16:31:59 +0000 |
| commit | 8daf98b6236bed2db074b8e8beb7e3225201b71a (patch) | |
| tree | 5db29fe6260d88177defe374eb9a6e8a1c21ce65 | |
| parent | 549a5d8b2843cff903a872ffa682f34d74bb341a (diff) | |
| download | rust-8daf98b6236bed2db074b8e8beb7e3225201b71a.tar.gz rust-8daf98b6236bed2db074b8e8beb7e3225201b71a.zip | |
Imply always-const host effects the same as any other item bound
| -rw-r--r-- | compiler/rustc_hir_analysis/src/collect/item_bounds.rs | 1 | ||||
| -rw-r--r-- | tests/ui/traits/const-traits/imply-always-const.rs | 19 |
2 files changed, 20 insertions, 0 deletions
diff --git a/compiler/rustc_hir_analysis/src/collect/item_bounds.rs b/compiler/rustc_hir_analysis/src/collect/item_bounds.rs index 7e3fb5448f6..548ba343aae 100644 --- a/compiler/rustc_hir_analysis/src/collect/item_bounds.rs +++ b/compiler/rustc_hir_analysis/src/collect/item_bounds.rs @@ -124,6 +124,7 @@ fn remap_gat_vars_and_recurse_into_nested_projections<'tcx>( ty::ClauseKind::Trait(tr) => tr.self_ty(), ty::ClauseKind::Projection(proj) => proj.projection_term.self_ty(), ty::ClauseKind::TypeOutlives(outlives) => outlives.0, + ty::ClauseKind::HostEffect(host) => host.self_ty(), _ => return None, }; diff --git a/tests/ui/traits/const-traits/imply-always-const.rs b/tests/ui/traits/const-traits/imply-always-const.rs new file mode 100644 index 00000000000..f6cab0681ec --- /dev/null +++ b/tests/ui/traits/const-traits/imply-always-const.rs @@ -0,0 +1,19 @@ +//@ check-pass + +#![feature(const_trait_impl)] + +#[const_trait] +trait A where Self::Assoc: const B { + type Assoc; +} + +#[const_trait] +trait B {} + +fn needs_b<T: const B>() {} + +fn test<T: A>() { + needs_b::<T::Assoc>(); +} + +fn main() {} |
