simplify fold
This commit is contained in:
parent
9f2e15d232
commit
8c41cd0d78
@ -1,9 +1,6 @@
|
||||
use std::ops::ControlFlow;
|
||||
|
||||
use crate::{
|
||||
ty::{self, BoundRegion, BoundRegionKind},
|
||||
Opaque,
|
||||
};
|
||||
use crate::Opaque;
|
||||
|
||||
use super::ty::{
|
||||
Allocation, Binder, Const, ConstDef, ConstantKind, ExistentialPredicate, FnSig, GenericArgKind,
|
||||
@ -116,36 +113,8 @@ impl Foldable for Region {
|
||||
fn fold<V: Folder>(&self, folder: &mut V) -> ControlFlow<V::Break, Self> {
|
||||
folder.fold_reg(self)
|
||||
}
|
||||
fn super_fold<V: Folder>(&self, folder: &mut V) -> ControlFlow<V::Break, Self> {
|
||||
let mut kind = self.kind.clone();
|
||||
match &mut kind {
|
||||
crate::ty::RegionKind::ReEarlyBound(_) => {}
|
||||
crate::ty::RegionKind::ReLateBound(_, bound_reg) => {
|
||||
*bound_reg = bound_reg.fold(folder)?
|
||||
}
|
||||
crate::ty::RegionKind::ReStatic => {}
|
||||
crate::ty::RegionKind::RePlaceholder(bound_reg) => {
|
||||
bound_reg.bound = bound_reg.bound.fold(folder)?
|
||||
}
|
||||
crate::ty::RegionKind::ReErased => {}
|
||||
}
|
||||
ControlFlow::Continue(ty::Region { kind: kind }.into())
|
||||
}
|
||||
}
|
||||
|
||||
impl Foldable for BoundRegion {
|
||||
fn super_fold<V: Folder>(&self, folder: &mut V) -> ControlFlow<V::Break, Self> {
|
||||
ControlFlow::Continue(BoundRegion { var: self.var, kind: self.kind.fold(folder)? })
|
||||
}
|
||||
}
|
||||
|
||||
impl Foldable for BoundRegionKind {
|
||||
fn super_fold<V: Folder>(&self, _folder: &mut V) -> ControlFlow<V::Break, Self> {
|
||||
match self {
|
||||
BoundRegionKind::BrAnon => ControlFlow::Continue(self.clone()),
|
||||
BoundRegionKind::BrNamed(_, _) => ControlFlow::Continue(self.clone()),
|
||||
BoundRegionKind::BrEnv => ControlFlow::Continue(self.clone()),
|
||||
}
|
||||
fn super_fold<V: Folder>(&self, _: &mut V) -> ControlFlow<V::Break, Self> {
|
||||
ControlFlow::Continue(self.clone())
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user