@ -168,15 +168,14 @@ module PulseTransferFunctions = struct
Ok astate
Ok astate
in
in
[ check_error summary result ]
[ check_error summary result ]
| Prune ( condition , loc , _ is_then_branch , _ if_kind ) -> (
| Prune ( condition , loc , _ is_then_branch , _ if_kind ) ->
let post , cond_satisfiable =
let post , cond_satisfiable =
PulseOperations . assert_is_true loc ~ condition astate | > check_error summary
PulseOperations . assert_is_true loc ~ condition astate | > check_error summary
in
in
match ( cond_satisfiable : PulseOperations . TBool . t ) with
if cond_satisfiable then
| False ->
(* [condition] is true or unknown value: go into the branch *)
(* [condition] is known to be unsatisfiable: prune path *) []
[ post ]
| True | Top ->
else (* [condition] is known to be unsatisfiable: prune path *) []
(* [condition] is true or unknown value: go into the branch *) [ post ] )
| Call ( ret , call_exp , actuals , loc , call_flags ) ->
| Call ( ret , call_exp , actuals , loc , call_flags ) ->
dispatch_call summary ret call_exp actuals loc call_flags astate | > check_error summary
dispatch_call summary ret call_exp actuals loc call_flags astate | > check_error summary
| Metadata ( ExitScope ( vars , location ) ) ->
| Metadata ( ExitScope ( vars , location ) ) ->