@@ -24,6 +24,9 @@ struct RecursiveContext<I: Interner> {
2424 /// result.
2525 cache : FxHashMap < UCanonicalGoal < I > , Fallible < Solution < I > > > ,
2626
27+ /// The maximum size for goals.
28+ max_size : usize ,
29+
2730 caching_enabled : bool ,
2831}
2932
@@ -42,9 +45,13 @@ pub struct RecursiveSolver<I: Interner> {
4245}
4346
4447impl < I : Interner > RecursiveSolver < I > {
45- pub fn new ( overflow_depth : usize , caching_enabled : bool ) -> Self {
48+ pub fn new ( overflow_depth : usize , max_size : usize , caching_enabled : bool ) -> Self {
4649 Self {
47- ctx : Box :: new ( RecursiveContext :: new ( overflow_depth, caching_enabled) ) ,
50+ ctx : Box :: new ( RecursiveContext :: new (
51+ overflow_depth,
52+ max_size,
53+ caching_enabled,
54+ ) ) ,
4855 }
4956 }
5057}
@@ -76,11 +83,12 @@ impl<T> MergeWith<T> for Fallible<T> {
7683}
7784
7885impl < I : Interner > RecursiveContext < I > {
79- pub fn new ( overflow_depth : usize , caching_enabled : bool ) -> Self {
86+ pub fn new ( overflow_depth : usize , max_size : usize , caching_enabled : bool ) -> Self {
8087 RecursiveContext {
8188 stack : Stack :: new ( overflow_depth) ,
8289 search_graph : SearchGraph :: new ( ) ,
8390 cache : FxHashMap :: default ( ) ,
91+ max_size,
8492 caching_enabled,
8593 }
8694 }
@@ -291,6 +299,10 @@ impl<'me, I: Interner> SolveDatabase<I> for Solver<'me, I> {
291299 fn db ( & self ) -> & dyn RustIrDatabase < I > {
292300 self . program
293301 }
302+
303+ fn max_size ( & self ) -> usize {
304+ self . context . max_size
305+ }
294306}
295307
296308impl < I : Interner > chalk_solve:: Solver < I > for RecursiveSolver < I > {
0 commit comments