Document flip polarity
This commit is contained in:
parent
7829d9dde3
commit
c4c76a4fbd
2 changed files with 7 additions and 0 deletions
|
@ -56,6 +56,9 @@ pub type PredicateObligation<'tcx> = Obligation<'tcx, ty::Predicate<'tcx>>;
|
||||||
pub type TraitObligation<'tcx> = Obligation<'tcx, ty::PolyTraitPredicate<'tcx>>;
|
pub type TraitObligation<'tcx> = Obligation<'tcx, ty::PolyTraitPredicate<'tcx>>;
|
||||||
|
|
||||||
impl PredicateObligation<'tcx> {
|
impl PredicateObligation<'tcx> {
|
||||||
|
/// Flips the polarity of the inner predicate.
|
||||||
|
///
|
||||||
|
/// Given `T: Trait` predicate it returns `T: !Trait` and given `T: !Trait` returns `T: Trait`.
|
||||||
pub fn flip_polarity(&self, tcx: TyCtxt<'tcx>) -> Option<PredicateObligation<'tcx>> {
|
pub fn flip_polarity(&self, tcx: TyCtxt<'tcx>) -> Option<PredicateObligation<'tcx>> {
|
||||||
Some(PredicateObligation {
|
Some(PredicateObligation {
|
||||||
cause: self.cause.clone(),
|
cause: self.cause.clone(),
|
||||||
|
|
|
@ -190,6 +190,7 @@ pub enum ImplPolarity {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ImplPolarity {
|
impl ImplPolarity {
|
||||||
|
/// Flips polarity by turning `Positive` into `Negative` and `Negative` into `Positive`.
|
||||||
pub fn flip(&self) -> Option<ImplPolarity> {
|
pub fn flip(&self) -> Option<ImplPolarity> {
|
||||||
match self {
|
match self {
|
||||||
ImplPolarity::Positive => Some(ImplPolarity::Negative),
|
ImplPolarity::Positive => Some(ImplPolarity::Negative),
|
||||||
|
@ -492,6 +493,9 @@ impl<'tcx> Predicate<'tcx> {
|
||||||
self.inner.kind
|
self.inner.kind
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Flips the polarity of a Predicate.
|
||||||
|
///
|
||||||
|
/// Given `T: Trait` predicate it returns `T: !Trait` and given `T: !Trait` returns `T: Trait`.
|
||||||
pub fn flip_polarity(&self, tcx: TyCtxt<'tcx>) -> Option<Predicate<'tcx>> {
|
pub fn flip_polarity(&self, tcx: TyCtxt<'tcx>) -> Option<Predicate<'tcx>> {
|
||||||
let kind = self
|
let kind = self
|
||||||
.inner
|
.inner
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue