Rollup merge of #93358 - compiler-errors:is-not-const, r=fee1-dead
Add note suggesting that predicate may be satisfied, but is not `const` Not sure if we should be printing this in addition to, or perhaps _instead_ of the help message: ``` help: the trait `~const Add` is not implemented for `NonConstAdd` ``` Also added `ParamEnv::is_const` and `PolyTraitPredicate::is_const_if_const` and, in a separate commit, used those in other places instead of `== hir::Constness::Const`, etc. r? ````@fee1-dead````
This commit is contained in:
commit
103c3a38a6
14 changed files with 84 additions and 12 deletions
|
@ -784,6 +784,11 @@ impl<'tcx> TraitPredicate<'tcx> {
|
|||
pub fn self_ty(self) -> Ty<'tcx> {
|
||||
self.trait_ref.self_ty()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn is_const_if_const(self) -> bool {
|
||||
self.constness == BoundConstness::ConstIfConst
|
||||
}
|
||||
}
|
||||
|
||||
impl<'tcx> PolyTraitPredicate<'tcx> {
|
||||
|
@ -803,6 +808,11 @@ impl<'tcx> PolyTraitPredicate<'tcx> {
|
|||
p
|
||||
});
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn is_const_if_const(self) -> bool {
|
||||
self.skip_binder().is_const_if_const()
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug, TyEncodable, TyDecodable)]
|
||||
|
@ -1388,6 +1398,11 @@ impl<'tcx> ParamEnv<'tcx> {
|
|||
self.packed.tag().constness
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn is_const(self) -> bool {
|
||||
self.packed.tag().constness == hir::Constness::Const
|
||||
}
|
||||
|
||||
/// Construct a trait environment with no where-clauses in scope
|
||||
/// where the values of all `impl Trait` and other hidden types
|
||||
/// are revealed. This is suitable for monomorphized, post-typeck
|
||||
|
@ -1503,6 +1518,7 @@ impl<'tcx> PolyTraitRef<'tcx> {
|
|||
polarity: ty::ImplPolarity::Positive,
|
||||
})
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn without_const(self) -> PolyTraitPredicate<'tcx> {
|
||||
self.with_constness(BoundConstness::NotConst)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue