File tree Expand file tree Collapse file tree 1 file changed +15
-3
lines changed Expand file tree Collapse file tree 1 file changed +15
-3
lines changed Original file line number Diff line number Diff line change @@ -836,9 +836,21 @@ void smv_typecheckt::typecheck_expr_rec(
836836    auto  &false_case = if_expr.false_case ();
837837    typecheck_expr_rec (if_expr.cond (), mode);
838838    convert_expr_to (if_expr.cond (), bool_typet{});
839-     typecheck_expr_rec (true_case, dest_type, mode);
840-     typecheck_expr_rec (false_case, dest_type, mode);
841-     expr.type () = dest_type;
839+ 
840+     if (dest_type.is_nil ())
841+     {
842+       typecheck_expr_rec (true_case, mode);
843+       typecheck_expr_rec (false_case, mode);
844+       expr.type () = type_union (true_case.type (), false_case.type ());
845+       typecheck_expr_rec (true_case, expr.type (), mode);
846+       typecheck_expr_rec (false_case, expr.type (), mode);
847+     }
848+     else 
849+     {
850+       typecheck_expr_rec (true_case, dest_type, mode);
851+       typecheck_expr_rec (false_case, dest_type, mode);
852+       expr.type () = dest_type;
853+     }
842854  }
843855  else  if (expr.id ()==ID_plus || expr.id ()==ID_minus ||
844856          expr.id ()==ID_mult || expr.id ()==ID_div ||
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments