@@ -370,7 +370,11 @@ def collect_post_assumes(self) -> None:
370370 """Collect callsite postconditions from callee's contracts and add as assume."""
371371
372372 for fn in self .get_functions ():
373- fn .collect_post_assumes ()
373+ try :
374+ fn .collect_post_assumes ()
375+ except UF .CHCError as e :
376+ chklogger .logger .error (str (e ))
377+ continue
374378
375379 self .save_interface_dictionary ()
376380 self .save_predicate_dictionary ()
@@ -444,7 +448,11 @@ def get_functions(self) -> Iterable[CFunction]:
444448
445449 def iter_functions (self , f : Callable [[CFunction ], None ]) -> None :
446450 for fn in self .get_functions ():
447- f (fn )
451+ try :
452+ f (fn )
453+ except UF .CHCError as e :
454+ chklogger .logger .error (str (e ))
455+ continue
448456
449457 def get_compinfos (self ) -> List ["CCompInfo" ]:
450458 return self .cfileglobals .get_compinfos ()
@@ -482,16 +490,28 @@ def get_callinstrs(self) -> List["CCallInstr"]:
482490
483491 def reload_spos (self ) -> None :
484492 for fn in self .get_functions ():
485- fn .reload_spos ()
493+ try :
494+ fn .reload_spos ()
495+ except UF .CHCError as e :
496+ chklogger .logger .error (e .msg )
497+ continue
486498
487499 def reload_ppos (self ) -> None :
488500 for fn in self .get_functions ():
489- fn .reload_ppos ()
501+ try :
502+ fn .reload_ppos ()
503+ except UF .CHCError as e :
504+ chklogger .logger .error (e .msg )
505+ continue
490506
491507 def get_ppos (self ) -> List [CFunctionPO ]:
492508 result : List [CFunctionPO ] = []
493509 for fn in self .get_functions ():
494- result .extend (fn .get_ppos ())
510+ try :
511+ result .extend (fn .get_ppos ())
512+ except UF .CHCError as e :
513+ chklogger .logger .error (str (e ))
514+ continue
495515 return result
496516
497517 def get_open_ppos (self ) -> List [CFunctionPO ]:
@@ -521,7 +541,11 @@ def get_ppos_delegated(self) -> List[CFunctionPO]:
521541 def get_spos (self ) -> List [CFunctionPO ]:
522542 result : List [CFunctionPO ] = []
523543 for fn in self .get_functions ():
524- result .extend (fn .get_spos ())
544+ try :
545+ result .extend (fn .get_spos ())
546+ except UF .CHCError as e :
547+ chklogger .logger .error (str (e ))
548+ continue
525549 return result
526550
527551 def get_line_ppos (self ) -> Dict [int , Dict [str , Any ]]:
0 commit comments