@@ -114,17 +114,15 @@ pub(crate) fn infer_definition_types<'db>(
114114fn definition_cycle_recover < ' db > (
115115 db : & ' db dyn Db ,
116116 _id : salsa:: Id ,
117- _last_provisional_value : & DefinitionInference < ' db > ,
118- _value : & DefinitionInference < ' db > ,
117+ last_provisional_value : & DefinitionInference < ' db > ,
118+ value : DefinitionInference < ' db > ,
119119 count : u32 ,
120120 definition : Definition < ' db > ,
121- ) -> salsa:: CycleRecoveryAction < DefinitionInference < ' db > > {
122- if count == ITERATIONS_BEFORE_FALLBACK {
123- salsa:: CycleRecoveryAction :: Fallback ( DefinitionInference :: cycle_fallback (
124- definition. scope ( db) ,
125- ) )
121+ ) -> DefinitionInference < ' db > {
122+ if & value == last_provisional_value || count != ITERATIONS_BEFORE_FALLBACK {
123+ value
126124 } else {
127- salsa :: CycleRecoveryAction :: Iterate
125+ DefinitionInference :: cycle_fallback ( definition . scope ( db ) )
128126 }
129127}
130128
@@ -230,17 +228,15 @@ pub(crate) fn infer_isolated_expression<'db>(
230228fn expression_cycle_recover < ' db > (
231229 db : & ' db dyn Db ,
232230 _id : salsa:: Id ,
233- _last_provisional_value : & ExpressionInference < ' db > ,
234- _value : & ExpressionInference < ' db > ,
231+ last_provisional_value : & ExpressionInference < ' db > ,
232+ value : ExpressionInference < ' db > ,
235233 count : u32 ,
236234 input : InferExpression < ' db > ,
237- ) -> salsa:: CycleRecoveryAction < ExpressionInference < ' db > > {
238- if count == ITERATIONS_BEFORE_FALLBACK {
239- salsa:: CycleRecoveryAction :: Fallback ( ExpressionInference :: cycle_fallback (
240- input. expression ( db) . scope ( db) ,
241- ) )
235+ ) -> ExpressionInference < ' db > {
236+ if & value == last_provisional_value || count != ITERATIONS_BEFORE_FALLBACK {
237+ value
242238 } else {
243- salsa :: CycleRecoveryAction :: Iterate
239+ ExpressionInference :: cycle_fallback ( input . expression ( db ) . scope ( db ) )
244240 }
245241}
246242
0 commit comments