Skip to content

Commit d2ec961

Browse files
committed
Use specialisation in ParamEnv traversable impls
1 parent 09239c2 commit d2ec961

File tree

1 file changed

+19
-5
lines changed
  • compiler/rustc_middle/src/ty

1 file changed

+19
-5
lines changed

compiler/rustc_middle/src/ty/mod.rs

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1627,17 +1627,31 @@ impl<'tcx> TypeFoldable<TyCtxt<'tcx>> for ParamEnv<'tcx> {
16271627
folder: &mut F,
16281628
) -> Result<Self, F::Error> {
16291629
Ok(ParamEnv::new(
1630-
self.caller_bounds().try_fold_with(folder)?,
1631-
self.reveal().try_fold_with(folder)?,
1632-
self.constness(),
1630+
rustc_type_ir::prefer_noop_traversal_if_applicable!(
1631+
{ self.caller_bounds() }.try_fold_with(folder)
1632+
)?,
1633+
rustc_type_ir::prefer_noop_traversal_if_applicable!(
1634+
{ self.reveal() }.try_fold_with(folder)
1635+
)?,
1636+
rustc_type_ir::prefer_noop_traversal_if_applicable!(
1637+
{ self.constness() }.try_fold_with(folder)
1638+
)?,
16331639
))
16341640
}
16351641
}
16361642

16371643
impl<'tcx> TypeVisitable<TyCtxt<'tcx>> for ParamEnv<'tcx> {
16381644
fn visit_with<V: TypeVisitor<TyCtxt<'tcx>>>(&self, visitor: &mut V) -> ControlFlow<V::BreakTy> {
1639-
self.caller_bounds().visit_with(visitor)?;
1640-
self.reveal().visit_with(visitor)
1645+
rustc_type_ir::prefer_noop_traversal_if_applicable!(
1646+
{ &self.caller_bounds() }.visit_with(visitor)
1647+
)?;
1648+
rustc_type_ir::prefer_noop_traversal_if_applicable!(
1649+
{ &self.reveal() }.visit_with(visitor)
1650+
)?;
1651+
rustc_type_ir::prefer_noop_traversal_if_applicable!(
1652+
{ &self.constness() }.visit_with(visitor)
1653+
)?;
1654+
ControlFlow::Continue(())
16411655
}
16421656
}
16431657

0 commit comments

Comments
 (0)