diff options
| author | bors <bors@rust-lang.org> | 2025-08-03 05:26:43 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2025-08-03 05:26:43 +0000 |
| commit | da19b9d24c4ed900b91b45ec7f7795ec43613b1e (patch) | |
| tree | 4f6c6f09b32cbc9e92e1391808e8ba4556afe2ba /compiler/rustc_middle/src/ty/mod.rs | |
| parent | 5b9564a18950db64c5aee8ba19d55a97b2e8d1cf (diff) | |
| parent | 64be8bb599d3efa12235e266177c828ad97373e6 (diff) | |
| download | rust-da19b9d24c4ed900b91b45ec7f7795ec43613b1e.tar.gz rust-da19b9d24c4ed900b91b45ec7f7795ec43613b1e.zip | |
Auto merge of #144677 - nnethercote:bound-const-handling, r=lcnr
Improve bound const handling A few changes to make const handling more similar to type handling. r? `@compiler-errors` -errors
Diffstat (limited to 'compiler/rustc_middle/src/ty/mod.rs')
| -rw-r--r-- | compiler/rustc_middle/src/ty/mod.rs | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/compiler/rustc_middle/src/ty/mod.rs b/compiler/rustc_middle/src/ty/mod.rs index d07ecdaf3e4..0deb2482c6f 100644 --- a/compiler/rustc_middle/src/ty/mod.rs +++ b/compiler/rustc_middle/src/ty/mod.rs @@ -908,34 +908,43 @@ impl<'tcx> rustc_type_ir::inherent::PlaceholderLike<TyCtxt<'tcx>> for Placeholde #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, HashStable)] #[derive(TyEncodable, TyDecodable)] -pub struct BoundConst<'tcx> { +pub struct BoundConst { pub var: BoundVar, - pub ty: Ty<'tcx>, } -pub type PlaceholderConst = Placeholder<BoundVar>; +impl<'tcx> rustc_type_ir::inherent::BoundVarLike<TyCtxt<'tcx>> for BoundConst { + fn var(self) -> BoundVar { + self.var + } + + fn assert_eq(self, var: ty::BoundVariableKind) { + var.expect_const() + } +} + +pub type PlaceholderConst = Placeholder<BoundConst>; impl<'tcx> rustc_type_ir::inherent::PlaceholderLike<TyCtxt<'tcx>> for PlaceholderConst { - type Bound = BoundVar; + type Bound = BoundConst; fn universe(self) -> UniverseIndex { self.universe } fn var(self) -> BoundVar { - self.bound + self.bound.var } fn with_updated_universe(self, ui: UniverseIndex) -> Self { Placeholder { universe: ui, ..self } } - fn new(ui: UniverseIndex, bound: BoundVar) -> Self { + fn new(ui: UniverseIndex, bound: BoundConst) -> Self { Placeholder { universe: ui, bound } } fn new_anon(ui: UniverseIndex, var: BoundVar) -> Self { - Placeholder { universe: ui, bound: var } + Placeholder { universe: ui, bound: BoundConst { var } } } } |
