[IR] `PredSymb.dangling_kind option` can be replaced by `bool`

Summary: This one is just for fun.

Reviewed By: ngorogiannis

Differential Revision: D19158529

fbshipit-source-id: 2ccda60ca
master
Jules Villard 5 years ago committed by Facebook Github Bot
parent 6c988160c1
commit bc799fc6cd

@ -60,7 +60,7 @@ exception Custom_error of string * Localise.error_desc
exception Dummy_exception of Localise.error_desc exception Dummy_exception of Localise.error_desc
exception exception
Dangling_pointer_dereference of PredSymb.dangling_kind option * Localise.error_desc * L.ocaml_pos Dangling_pointer_dereference of bool (* is it user visible? *) * Localise.error_desc * L.ocaml_pos
exception Deallocate_stack_variable of Localise.error_desc exception Deallocate_stack_variable of Localise.error_desc
@ -256,14 +256,8 @@ let recognize_exception exn =
; visibility= Exn_developer ; visibility= Exn_developer
; severity= Some Info ; severity= Some Info
; category= Checker } ; category= Checker }
| Dangling_pointer_dereference (dko, desc, ocaml_pos) -> | Dangling_pointer_dereference (user_visible, desc, ocaml_pos) ->
let visibility = let visibility = if user_visible then Exn_user else Exn_developer in
match dko with
| Some _ ->
Exn_user (* only show to the user if the category was identified *)
| None ->
Exn_developer
in
{ name= IssueType.dangling_pointer_dereference { name= IssueType.dangling_pointer_dereference
; description= desc ; description= desc
; ocaml_pos= Some ocaml_pos ; ocaml_pos= Some ocaml_pos

@ -61,7 +61,7 @@ exception Dummy_exception of Localise.error_desc
exception exception
Dangling_pointer_dereference of Dangling_pointer_dereference of
PredSymb.dangling_kind option * Localise.error_desc * Logging.ocaml_pos bool (* is it user visible? *) * Localise.error_desc * Logging.ocaml_pos
exception Deallocate_stack_variable of Localise.error_desc exception Deallocate_stack_variable of Localise.error_desc

@ -451,7 +451,7 @@ let mk_ptsto_exp_footprint pname tenv orig_prop (lexp, typ) max_stamp inst :
let err_desc = let err_desc =
Errdesc.explain_dereference pname tenv deref_str orig_prop (State.get_loc_exn ()) Errdesc.explain_dereference pname tenv deref_str orig_prop (State.get_loc_exn ())
in in
raise (Exceptions.Dangling_pointer_dereference (None, err_desc, __POS__)) ) ; raise (Exceptions.Dangling_pointer_dereference (false, err_desc, __POS__)) ) ;
let off_foot, eqs = laundry_offset_for_footprint max_stamp off in let off_foot, eqs = laundry_offset_for_footprint max_stamp off in
let subtype = let subtype =
match !Language.curr_language with Clang -> Subtype.exact | Java -> Subtype.subtypes match !Language.curr_language with Clang -> Subtype.exact | Java -> Subtype.subtypes
@ -1598,7 +1598,7 @@ let check_dereference_error tenv pdesc (prop : Prop.normal Prop.t) lexp loc =
| Some (Apred (Adangling dk, _)) -> | Some (Apred (Adangling dk, _)) ->
let deref_str = Localise.deref_str_dangling (Some dk) in let deref_str = Localise.deref_str_dangling (Some dk) in
let err_desc = Errdesc.explain_dereference pname tenv deref_str prop (State.get_loc_exn ()) in let err_desc = Errdesc.explain_dereference pname tenv deref_str prop (State.get_loc_exn ()) in
raise (Exceptions.Dangling_pointer_dereference (Some dk, err_desc, __POS__)) raise (Exceptions.Dangling_pointer_dereference (true, err_desc, __POS__))
| Some (Apred (Aundef _, _)) -> | Some (Apred (Aundef _, _)) ->
() ()
| Some (Apred (Aresource ({ra_kind= Rrelease} as ra), _)) -> | Some (Apred (Aresource ({ra_kind= Rrelease} as ra), _)) ->
@ -1609,7 +1609,7 @@ let check_dereference_error tenv pdesc (prop : Prop.normal Prop.t) lexp loc =
if Prover.check_equal tenv Prop.prop_emp (Exp.root_of_lexp root) Exp.minus_one then if Prover.check_equal tenv Prop.prop_emp (Exp.root_of_lexp root) Exp.minus_one then
let deref_str = Localise.deref_str_dangling None in let deref_str = Localise.deref_str_dangling None in
let err_desc = Errdesc.explain_dereference pname tenv deref_str prop loc in let err_desc = Errdesc.explain_dereference pname tenv deref_str prop loc in
raise (Exceptions.Dangling_pointer_dereference (None, err_desc, __POS__)) raise (Exceptions.Dangling_pointer_dereference (false, err_desc, __POS__))
(* Check that an expression representin an objc block can be null and raise a [B1] null exception.*) (* Check that an expression representin an objc block can be null and raise a [B1] null exception.*)

@ -1076,7 +1076,7 @@ let check_uninitialize_dangling_deref caller_pname tenv callee_pname actual_pre
~f:(fun (p, _) -> ~f:(fun (p, _) ->
match check_dereferences caller_pname tenv callee_pname actual_pre sub p formal_params with match check_dereferences caller_pname tenv callee_pname actual_pre sub p formal_params with
| Some (Deref_undef_exp, desc) -> | Some (Deref_undef_exp, desc) ->
raise (Exceptions.Dangling_pointer_dereference (Some PredSymb.DAuninit, desc, __POS__)) raise (Exceptions.Dangling_pointer_dereference (true, desc, __POS__))
| _ -> | _ ->
() ) () )
props props
@ -1333,13 +1333,11 @@ let exe_call_postprocess tenv ret_id trace_call callee_pname callee_attrs loc re
| Dereference_error (Deref_minusone, desc, path_opt) -> | Dereference_error (Deref_minusone, desc, path_opt) ->
trace_call CR_not_met ; trace_call CR_not_met ;
extend_path path_opt None ; extend_path path_opt None ;
raise raise (Exceptions.Dangling_pointer_dereference (true, desc, __POS__))
(Exceptions.Dangling_pointer_dereference (Some PredSymb.DAminusone, desc, __POS__))
| Dereference_error (Deref_undef_exp, desc, path_opt) -> | Dereference_error (Deref_undef_exp, desc, path_opt) ->
trace_call CR_not_met ; trace_call CR_not_met ;
extend_path path_opt None ; extend_path path_opt None ;
raise raise (Exceptions.Dangling_pointer_dereference (true, desc, __POS__))
(Exceptions.Dangling_pointer_dereference (Some PredSymb.DAuninit, desc, __POS__))
| Dereference_error (Deref_null pos, desc, path_opt) -> | Dereference_error (Deref_null pos, desc, path_opt) ->
trace_call CR_not_met ; trace_call CR_not_met ;
extend_path path_opt (Some pos) ; extend_path path_opt (Some pos) ;

Loading…
Cancel
Save