Skip to content

Commit 946462a

Browse files
Use ControlFlow in Visitor
1 parent 1c91d87 commit 946462a

File tree

14 files changed

+318
-358
lines changed

14 files changed

+318
-358
lines changed

chalk-derive/src/lib.rs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -162,10 +162,7 @@ fn derive_any_visit(
162162

163163
let body = s.each(|bi| {
164164
quote! {
165-
result = result.combine(::chalk_ir::visit::Visit::visit_with(#bi, visitor, outer_binder));
166-
if result.return_early() {
167-
return result;
168-
}
165+
::chalk_ir::try_break!(::chalk_ir::visit::Visit::visit_with(#bi, visitor, outer_binder));
169166
}
170167
});
171168

@@ -178,19 +175,18 @@ fn derive_any_visit(
178175
s.bound_impl(
179176
quote!(::chalk_ir::visit:: #trait_name <#interner>),
180177
quote! {
181-
fn #method_name <'i, R: ::chalk_ir::visit::VisitResult>(
178+
fn #method_name <'i>(
182179
&self,
183-
visitor: &mut dyn ::chalk_ir::visit::Visitor < 'i, #interner, Result = R >,
180+
visitor: &mut dyn ::chalk_ir::visit::Visitor < 'i, #interner >,
184181
outer_binder: ::chalk_ir::DebruijnIndex,
185-
) -> R
182+
) -> ::chalk_ir::visit::ControlFlow<()>
186183
where
187184
#interner: 'i
188185
{
189-
let mut result = R::new();
190186
match *self {
191187
#body
192188
}
193-
return result;
189+
::chalk_ir::visit::ControlFlow::CONTINUE
194190
}
195191
},
196192
)

chalk-engine/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ use std::usize;
5858

5959
use chalk_derive::{Fold, HasInterner, Visit};
6060
use chalk_ir::interner::Interner;
61-
use chalk_ir::visit::VisitResult;
61+
use chalk_ir::visit::ControlFlow;
6262
use chalk_ir::{
6363
AnswerSubst, Canonical, ConstrainedSubst, Constraint, DebruijnIndex, Goal, InEnvironment,
6464
Substitution,

chalk-ir/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ extern crate self as chalk_ir;
99
use crate::cast::{Cast, CastTo, Caster};
1010
use crate::fold::shift::Shift;
1111
use crate::fold::{Fold, Folder, Subst, SuperFold};
12-
use crate::visit::{SuperVisit, Visit, VisitExt, VisitResult, Visitor};
12+
use crate::visit::{ControlFlow, SuperVisit, Visit, VisitExt, Visitor};
1313
use chalk_derive::{Fold, HasInterner, SuperVisit, Visit, Zip};
1414
use std::marker::PhantomData;
1515

0 commit comments

Comments
 (0)