Skip to content

Commit c614895

Browse files
committed
Change Fold and Folder traits to take values
1 parent 80747d9 commit c614895

File tree

7 files changed

+53
-51
lines changed

7 files changed

+53
-51
lines changed

chalk-derive/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -313,15 +313,15 @@ fn derive_fold(mut s: synstructure::Structure) -> TokenStream {
313313
type Result = #result;
314314

315315
fn fold_with<'i>(
316-
&self,
316+
self,
317317
folder: &mut dyn ::chalk_ir::fold::Folder < 'i, #interner, #target_interner >,
318318
outer_binder: ::chalk_ir::DebruijnIndex,
319319
) -> ::chalk_ir::Fallible<Self::Result>
320320
where
321321
#interner: 'i,
322322
#target_interner: 'i,
323323
{
324-
Ok(match *self { #body })
324+
Ok(match self { #body })
325325
}
326326
},
327327
)

chalk-ir/src/fold.rs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ where
8181
/// encountered when folding. By default, invokes
8282
/// `super_fold_with`, which will in turn invoke the more
8383
/// specialized folding methods below, like `fold_free_var_ty`.
84-
fn fold_ty(&mut self, ty: &Ty<I>, outer_binder: DebruijnIndex) -> Fallible<Ty<TI>> {
84+
fn fold_ty(&mut self, ty: Ty<I>, outer_binder: DebruijnIndex) -> Fallible<Ty<TI>> {
8585
ty.super_fold_with(self.as_dyn(), outer_binder)
8686
}
8787

@@ -91,7 +91,7 @@ where
9191
/// specialized folding methods below, like `fold_free_var_lifetime`.
9292
fn fold_lifetime(
9393
&mut self,
94-
lifetime: &Lifetime<I>,
94+
lifetime: Lifetime<I>,
9595
outer_binder: DebruijnIndex,
9696
) -> Fallible<Lifetime<TI>> {
9797
lifetime.super_fold_with(self.as_dyn(), outer_binder)
@@ -103,7 +103,7 @@ where
103103
/// specialized folding methods below, like `fold_free_var_const`.
104104
fn fold_const(
105105
&mut self,
106-
constant: &Const<I>,
106+
constant: Const<I>,
107107
outer_binder: DebruijnIndex,
108108
) -> Fallible<Const<TI>> {
109109
constant.super_fold_with(self.as_dyn(), outer_binder)
@@ -112,14 +112,14 @@ where
112112
/// Invoked for every program clause. By default, recursively folds the goals contents.
113113
fn fold_program_clause(
114114
&mut self,
115-
clause: &ProgramClause<I>,
115+
clause: ProgramClause<I>,
116116
outer_binder: DebruijnIndex,
117117
) -> Fallible<ProgramClause<TI>> {
118118
clause.super_fold_with(self.as_dyn(), outer_binder)
119119
}
120120

121121
/// Invoked for every goal. By default, recursively folds the goals contents.
122-
fn fold_goal(&mut self, goal: &Goal<I>, outer_binder: DebruijnIndex) -> Fallible<Goal<TI>> {
122+
fn fold_goal(&mut self, goal: Goal<I>, outer_binder: DebruijnIndex) -> Fallible<Goal<TI>> {
123123
goal.super_fold_with(self.as_dyn(), outer_binder)
124124
}
125125

@@ -348,7 +348,7 @@ pub trait Fold<I: Interner, TI: TargetInterner<I> = I>: Debug {
348348
/// we encounter `Binders<T>` in the IR or other similar
349349
/// constructs.
350350
fn fold_with<'i>(
351-
&self,
351+
self,
352352
folder: &mut dyn Folder<'i, I, TI>,
353353
outer_binder: DebruijnIndex,
354354
) -> Fallible<Self::Result>
@@ -363,7 +363,7 @@ pub trait Fold<I: Interner, TI: TargetInterner<I> = I>: Debug {
363363
pub trait SuperFold<I: Interner, TI: TargetInterner<I> = I>: Fold<I, TI> {
364364
/// Recursively folds the value.
365365
fn super_fold_with<'i>(
366-
&self,
366+
self,
367367
folder: &mut dyn Folder<'i, I, TI>,
368368
outer_binder: DebruijnIndex,
369369
) -> Fallible<Self::Result>
@@ -379,7 +379,7 @@ impl<I: Interner, TI: TargetInterner<I>> Fold<I, TI> for Ty<I> {
379379
type Result = Ty<TI>;
380380

381381
fn fold_with<'i>(
382-
&self,
382+
self,
383383
folder: &mut dyn Folder<'i, I, TI>,
384384
outer_binder: DebruijnIndex,
385385
) -> Fallible<Self::Result>
@@ -398,7 +398,7 @@ where
398398
TI: TargetInterner<I>,
399399
{
400400
fn super_fold_with<'i>(
401-
&self,
401+
self,
402402
folder: &mut dyn Folder<'i, I, TI>,
403403
outer_binder: DebruijnIndex,
404404
) -> Fallible<Ty<TI>>
@@ -509,7 +509,7 @@ impl<I: Interner, TI: TargetInterner<I>> Fold<I, TI> for Lifetime<I> {
509509
type Result = Lifetime<TI>;
510510

511511
fn fold_with<'i>(
512-
&self,
512+
self,
513513
folder: &mut dyn Folder<'i, I, TI>,
514514
outer_binder: DebruijnIndex,
515515
) -> Fallible<Self::Result>
@@ -527,7 +527,7 @@ where
527527
TI: TargetInterner<I>,
528528
{
529529
fn super_fold_with<'i>(
530-
&self,
530+
self,
531531
folder: &mut dyn Folder<'i, I, TI>,
532532
outer_binder: DebruijnIndex,
533533
) -> Fallible<Lifetime<TI>>
@@ -568,7 +568,7 @@ impl<I: Interner, TI: TargetInterner<I>> Fold<I, TI> for Const<I> {
568568
type Result = Const<TI>;
569569

570570
fn fold_with<'i>(
571-
&self,
571+
self,
572572
folder: &mut dyn Folder<'i, I, TI>,
573573
outer_binder: DebruijnIndex,
574574
) -> Fallible<Self::Result>
@@ -586,7 +586,7 @@ where
586586
TI: TargetInterner<I>,
587587
{
588588
fn super_fold_with<'i>(
589-
&self,
589+
self,
590590
folder: &mut dyn Folder<'i, I, TI>,
591591
outer_binder: DebruijnIndex,
592592
) -> Fallible<Const<TI>>
@@ -627,7 +627,7 @@ impl<I: Interner, TI: TargetInterner<I>> Fold<I, TI> for Goal<I> {
627627
type Result = Goal<TI>;
628628

629629
fn fold_with<'i>(
630-
&self,
630+
self,
631631
folder: &mut dyn Folder<'i, I, TI>,
632632
outer_binder: DebruijnIndex,
633633
) -> Fallible<Self::Result>
@@ -642,7 +642,7 @@ impl<I: Interner, TI: TargetInterner<I>> Fold<I, TI> for Goal<I> {
642642
/// Superfold folds recursively.
643643
impl<I: Interner, TI: TargetInterner<I>> SuperFold<I, TI> for Goal<I> {
644644
fn super_fold_with<'i>(
645-
&self,
645+
self,
646646
folder: &mut dyn Folder<'i, I, TI>,
647647
outer_binder: DebruijnIndex,
648648
) -> Fallible<Self::Result>
@@ -666,7 +666,7 @@ impl<I: Interner, TI: TargetInterner<I>> Fold<I, TI> for ProgramClause<I> {
666666
type Result = ProgramClause<TI>;
667667

668668
fn fold_with<'i>(
669-
&self,
669+
self,
670670
folder: &mut dyn Folder<'i, I, TI>,
671671
outer_binder: DebruijnIndex,
672672
) -> Fallible<Self::Result>

chalk-ir/src/fold/binder_impls.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use crate::*;
99
impl<I: Interner, TI: TargetInterner<I>> Fold<I, TI> for FnPointer<I> {
1010
type Result = FnPointer<TI>;
1111
fn fold_with<'i>(
12-
&self,
12+
self,
1313
folder: &mut dyn Folder<'i, I, TI>,
1414
outer_binder: DebruijnIndex,
1515
) -> Fallible<Self::Result>
@@ -23,7 +23,7 @@ impl<I: Interner, TI: TargetInterner<I>> Fold<I, TI> for FnPointer<I> {
2323
sig,
2424
} = self;
2525
Ok(FnPointer {
26-
num_binders: *num_binders,
26+
num_binders,
2727
substitution: substitution.fold_with(folder, outer_binder.shifted_in())?,
2828
sig: FnSig {
2929
abi: TI::transfer_abi(sig.abi),
@@ -42,7 +42,7 @@ where
4242
{
4343
type Result = Binders<T::Result>;
4444
fn fold_with<'i>(
45-
&self,
45+
self,
4646
folder: &mut dyn Folder<'i, I, TI>,
4747
outer_binder: DebruijnIndex,
4848
) -> Fallible<Self::Result>
@@ -71,7 +71,7 @@ where
7171
{
7272
type Result = Canonical<T::Result>;
7373
fn fold_with<'i>(
74-
&self,
74+
self,
7575
folder: &mut dyn Folder<'i, I, TI>,
7676
outer_binder: DebruijnIndex,
7777
) -> Fallible<Self::Result>

0 commit comments

Comments
 (0)