|
|
|
@ -115,7 +115,7 @@ exception Unary_minus_applied_to_unsigned_expression of Localise.error_desc * L.
|
|
|
|
|
exception Wrong_argument_number of L.ocaml_pos
|
|
|
|
|
|
|
|
|
|
type t =
|
|
|
|
|
{ name: IssueType.t
|
|
|
|
|
{ issue_type: IssueType.t
|
|
|
|
|
; description: Localise.error_desc
|
|
|
|
|
; ocaml_pos: L.ocaml_pos option (** location in the infer source code *)
|
|
|
|
|
; visibility: visibility
|
|
|
|
@ -124,9 +124,8 @@ type t =
|
|
|
|
|
|
|
|
|
|
let recognize_exception exn =
|
|
|
|
|
match exn with
|
|
|
|
|
(* all the static names of errors must be defined in Config.IssueType *)
|
|
|
|
|
| Abduction_case_not_implemented ocaml_pos ->
|
|
|
|
|
{ name= IssueType.abduction_case_not_implemented
|
|
|
|
|
{ issue_type= IssueType.abduction_case_not_implemented
|
|
|
|
|
; description= Localise.no_desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_developer
|
|
|
|
@ -134,35 +133,35 @@ let recognize_exception exn =
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
| Analysis_stops (desc, ocaml_pos_opt) ->
|
|
|
|
|
let visibility = if Config.analysis_stops then Exn_user else Exn_developer in
|
|
|
|
|
{ name= IssueType.analysis_stops
|
|
|
|
|
{ issue_type= IssueType.analysis_stops
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= ocaml_pos_opt
|
|
|
|
|
; visibility
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
| Array_of_pointsto ocaml_pos ->
|
|
|
|
|
{ name= IssueType.array_of_pointsto
|
|
|
|
|
{ issue_type= IssueType.array_of_pointsto
|
|
|
|
|
; description= Localise.no_desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_developer
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
| Array_out_of_bounds_l1 (desc, ocaml_pos) ->
|
|
|
|
|
{ name= IssueType.array_out_of_bounds_l1
|
|
|
|
|
{ issue_type= IssueType.array_out_of_bounds_l1
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_developer
|
|
|
|
|
; severity= Some Error
|
|
|
|
|
; category= Checker }
|
|
|
|
|
| Array_out_of_bounds_l2 (desc, ocaml_pos) ->
|
|
|
|
|
{ name= IssueType.array_out_of_bounds_l2
|
|
|
|
|
{ issue_type= IssueType.array_out_of_bounds_l2
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_developer
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
| Array_out_of_bounds_l3 (desc, ocaml_pos) ->
|
|
|
|
|
{ name= IssueType.array_out_of_bounds_l3
|
|
|
|
|
{ issue_type= IssueType.array_out_of_bounds_l3
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_developer
|
|
|
|
@ -170,59 +169,59 @@ let recognize_exception exn =
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
| Assert_failure (f, l, c) ->
|
|
|
|
|
let ocaml_pos = (f, l, c, c) in
|
|
|
|
|
{ name= IssueType.assert_failure
|
|
|
|
|
{ issue_type= IssueType.assert_failure
|
|
|
|
|
; description= Localise.no_desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_developer
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
| Bad_footprint ocaml_pos ->
|
|
|
|
|
{ name= IssueType.bad_footprint
|
|
|
|
|
{ issue_type= IssueType.bad_footprint
|
|
|
|
|
; description= Localise.no_desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_developer
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
| Biabd_use_after_free (desc, ocaml_pos) ->
|
|
|
|
|
{ name= IssueType.biabd_use_after_free
|
|
|
|
|
{ issue_type= IssueType.biabd_use_after_free
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_user
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Prover }
|
|
|
|
|
| Cannot_star ocaml_pos ->
|
|
|
|
|
{ name= IssueType.cannot_star
|
|
|
|
|
{ issue_type= IssueType.cannot_star
|
|
|
|
|
; description= Localise.no_desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_developer
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
| Class_cast_exception (desc, ocaml_pos) ->
|
|
|
|
|
{ name= IssueType.class_cast_exception
|
|
|
|
|
{ issue_type= IssueType.class_cast_exception
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_developer
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Prover }
|
|
|
|
|
| Condition_always_true_false (desc, b, ocaml_pos) ->
|
|
|
|
|
let name =
|
|
|
|
|
let issue_type =
|
|
|
|
|
if b then IssueType.biabd_condition_always_true else IssueType.biabd_condition_always_false
|
|
|
|
|
in
|
|
|
|
|
{ name
|
|
|
|
|
{ issue_type
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_user
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
| Custom_error (error_msg, desc) ->
|
|
|
|
|
{ name= IssueType.register_from_string ~id:error_msg Biabduction
|
|
|
|
|
{ issue_type= IssueType.register_from_string ~id:error_msg Biabduction
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= None
|
|
|
|
|
; visibility= Exn_user
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Checker }
|
|
|
|
|
| Dummy_exception desc ->
|
|
|
|
|
{ name= IssueType.analysis_stops
|
|
|
|
|
{ issue_type= IssueType.analysis_stops
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= None
|
|
|
|
|
; visibility= Exn_developer
|
|
|
|
@ -230,105 +229,105 @@ let recognize_exception exn =
|
|
|
|
|
; category= Checker }
|
|
|
|
|
| Dangling_pointer_dereference (user_visible, desc, ocaml_pos) ->
|
|
|
|
|
let visibility = if user_visible then Exn_user else Exn_developer in
|
|
|
|
|
{ name= IssueType.dangling_pointer_dereference
|
|
|
|
|
{ issue_type= IssueType.dangling_pointer_dereference
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Prover }
|
|
|
|
|
| Deallocate_stack_variable desc ->
|
|
|
|
|
{ name= IssueType.deallocate_stack_variable
|
|
|
|
|
{ issue_type= IssueType.deallocate_stack_variable
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= None
|
|
|
|
|
; visibility= Exn_user
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Prover }
|
|
|
|
|
| Deallocate_static_memory desc ->
|
|
|
|
|
{ name= IssueType.deallocate_static_memory
|
|
|
|
|
{ issue_type= IssueType.deallocate_static_memory
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= None
|
|
|
|
|
; visibility= Exn_user
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Prover }
|
|
|
|
|
| Deallocation_mismatch (desc, ocaml_pos) ->
|
|
|
|
|
{ name= IssueType.deallocation_mismatch
|
|
|
|
|
{ issue_type= IssueType.deallocation_mismatch
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_user
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Prover }
|
|
|
|
|
| Divide_by_zero (desc, ocaml_pos) ->
|
|
|
|
|
{ name= IssueType.divide_by_zero
|
|
|
|
|
{ issue_type= IssueType.divide_by_zero
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_user
|
|
|
|
|
; severity= Some Error
|
|
|
|
|
; category= Checker }
|
|
|
|
|
| Eradicate (kind, desc) ->
|
|
|
|
|
{ name= kind
|
|
|
|
|
{ issue_type= kind
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= None
|
|
|
|
|
; visibility= Exn_user
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Prover }
|
|
|
|
|
| Empty_vector_access (desc, ocaml_pos) ->
|
|
|
|
|
{ name= IssueType.empty_vector_access
|
|
|
|
|
{ issue_type= IssueType.empty_vector_access
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_user
|
|
|
|
|
; severity= Some Error
|
|
|
|
|
; category= Prover }
|
|
|
|
|
| Field_not_null_checked (desc, ocaml_pos) ->
|
|
|
|
|
{ name= IssueType.field_not_null_checked
|
|
|
|
|
{ issue_type= IssueType.field_not_null_checked
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_user
|
|
|
|
|
; severity= Some Warning
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
| Frontend_warning (issue_type, desc, ocaml_pos) ->
|
|
|
|
|
{ name= issue_type
|
|
|
|
|
{ issue_type
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_user
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Linters }
|
|
|
|
|
| Checkers (kind, desc) ->
|
|
|
|
|
{ name= kind
|
|
|
|
|
{ issue_type= kind
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= None
|
|
|
|
|
; visibility= Exn_user
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Prover }
|
|
|
|
|
| Null_dereference (desc, ocaml_pos) ->
|
|
|
|
|
{ name= IssueType.null_dereference
|
|
|
|
|
{ issue_type= IssueType.null_dereference
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_user
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Prover }
|
|
|
|
|
| Null_test_after_dereference (desc, ocaml_pos) ->
|
|
|
|
|
{ name= IssueType.null_test_after_dereference
|
|
|
|
|
{ issue_type= IssueType.null_test_after_dereference
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_user
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
| Pointer_size_mismatch (desc, ocaml_pos) ->
|
|
|
|
|
{ name= IssueType.pointer_size_mismatch
|
|
|
|
|
{ issue_type= IssueType.pointer_size_mismatch
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_user
|
|
|
|
|
; severity= Some Error
|
|
|
|
|
; category= Checker }
|
|
|
|
|
| Inherently_dangerous_function desc ->
|
|
|
|
|
{ name= IssueType.inherently_dangerous_function
|
|
|
|
|
{ issue_type= IssueType.inherently_dangerous_function
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= None
|
|
|
|
|
; visibility= Exn_developer
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
| Internal_error desc ->
|
|
|
|
|
{ name= IssueType.internal_error
|
|
|
|
|
{ issue_type= IssueType.internal_error
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= None
|
|
|
|
|
; visibility= Exn_developer
|
|
|
|
@ -336,21 +335,21 @@ let recognize_exception exn =
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
| Leak (fp_part, (exn_vis, error_desc), done_array_abstraction, resource, ocaml_pos) ->
|
|
|
|
|
if done_array_abstraction then
|
|
|
|
|
{ name= IssueType.leak_after_array_abstraction
|
|
|
|
|
{ issue_type= IssueType.leak_after_array_abstraction
|
|
|
|
|
; description= error_desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_developer
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Prover }
|
|
|
|
|
else if fp_part then
|
|
|
|
|
{ name= IssueType.leak_in_footprint
|
|
|
|
|
{ issue_type= IssueType.leak_in_footprint
|
|
|
|
|
; description= error_desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_developer
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Prover }
|
|
|
|
|
else
|
|
|
|
|
let name =
|
|
|
|
|
let issue_type =
|
|
|
|
|
match resource with
|
|
|
|
|
| PredSymb.Rmemory _ ->
|
|
|
|
|
IssueType.memory_leak
|
|
|
|
@ -361,7 +360,7 @@ let recognize_exception exn =
|
|
|
|
|
| PredSymb.Rignore ->
|
|
|
|
|
IssueType.memory_leak
|
|
|
|
|
in
|
|
|
|
|
{ name
|
|
|
|
|
{ issue_type
|
|
|
|
|
; description= error_desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= exn_vis
|
|
|
|
@ -369,35 +368,35 @@ let recognize_exception exn =
|
|
|
|
|
; category= Prover }
|
|
|
|
|
| Missing_fld (fld, ocaml_pos) ->
|
|
|
|
|
let desc = Localise.verbatim_desc (Fieldname.to_full_string fld) in
|
|
|
|
|
{ name= IssueType.missing_fld
|
|
|
|
|
{ issue_type= IssueType.missing_fld
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_developer
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
| Premature_nil_termination (desc, ocaml_pos) ->
|
|
|
|
|
{ name= IssueType.premature_nil_termination
|
|
|
|
|
{ issue_type= IssueType.premature_nil_termination
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_user
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Prover }
|
|
|
|
|
| Parameter_not_null_checked (desc, ocaml_pos) ->
|
|
|
|
|
{ name= IssueType.parameter_not_null_checked
|
|
|
|
|
{ issue_type= IssueType.parameter_not_null_checked
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_user
|
|
|
|
|
; severity= Some Warning
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
| Precondition_not_found (desc, ocaml_pos) ->
|
|
|
|
|
{ name= IssueType.precondition_not_found
|
|
|
|
|
{ issue_type= IssueType.precondition_not_found
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_developer
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
| Precondition_not_met (desc, ocaml_pos) ->
|
|
|
|
|
{ name= IssueType.precondition_not_met
|
|
|
|
|
{ issue_type= IssueType.precondition_not_met
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_developer
|
|
|
|
@ -405,42 +404,42 @@ let recognize_exception exn =
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
(* always a warning *)
|
|
|
|
|
| Retain_cycle (desc, ocaml_pos) ->
|
|
|
|
|
{ name= IssueType.retain_cycle
|
|
|
|
|
{ issue_type= IssueType.retain_cycle
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_user
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Prover }
|
|
|
|
|
| Registered_observer_being_deallocated (desc, ocaml_pos) ->
|
|
|
|
|
{ name= IssueType.biabd_registered_observer_being_deallocated
|
|
|
|
|
{ issue_type= IssueType.biabd_registered_observer_being_deallocated
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_user
|
|
|
|
|
; severity= Some Error
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
| Stack_variable_address_escape (desc, ocaml_pos) ->
|
|
|
|
|
{ name= IssueType.biabd_stack_variable_address_escape
|
|
|
|
|
{ issue_type= IssueType.biabd_stack_variable_address_escape
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_user
|
|
|
|
|
; severity= Some Error
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
| SymOp.Analysis_failure_exe _ ->
|
|
|
|
|
{ name= IssueType.failure_exe
|
|
|
|
|
{ issue_type= IssueType.failure_exe
|
|
|
|
|
; description= Localise.no_desc
|
|
|
|
|
; ocaml_pos= None
|
|
|
|
|
; visibility= Exn_system
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
| Skip_function desc ->
|
|
|
|
|
{ name= IssueType.skip_function
|
|
|
|
|
{ issue_type= IssueType.skip_function
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= None
|
|
|
|
|
; visibility= Exn_developer
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
| Skip_pointer_dereference (desc, ocaml_pos) ->
|
|
|
|
|
{ name= IssueType.skip_pointer_dereference
|
|
|
|
|
{ issue_type= IssueType.skip_pointer_dereference
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_user
|
|
|
|
@ -448,28 +447,28 @@ let recognize_exception exn =
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
(* always an info *)
|
|
|
|
|
| Symexec_memory_error ocaml_pos ->
|
|
|
|
|
{ name= IssueType.symexec_memory_error
|
|
|
|
|
{ issue_type= IssueType.symexec_memory_error
|
|
|
|
|
; description= Localise.no_desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_developer
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
| Unary_minus_applied_to_unsigned_expression (desc, ocaml_pos) ->
|
|
|
|
|
{ name= IssueType.unary_minus_applied_to_unsigned_expression
|
|
|
|
|
{ issue_type= IssueType.unary_minus_applied_to_unsigned_expression
|
|
|
|
|
; description= desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_user
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
| Wrong_argument_number ocaml_pos ->
|
|
|
|
|
{ name= IssueType.wrong_argument_number
|
|
|
|
|
{ issue_type= IssueType.wrong_argument_number
|
|
|
|
|
; description= Localise.no_desc
|
|
|
|
|
; ocaml_pos= Some ocaml_pos
|
|
|
|
|
; visibility= Exn_developer
|
|
|
|
|
; severity= None
|
|
|
|
|
; category= Nocat }
|
|
|
|
|
| exn ->
|
|
|
|
|
{ name= IssueType.failure_exe
|
|
|
|
|
{ issue_type= IssueType.failure_exe
|
|
|
|
|
; description=
|
|
|
|
|
Localise.verbatim_desc (F.asprintf "%a: %s" Exn.pp exn (Caml.Printexc.get_backtrace ()))
|
|
|
|
|
; ocaml_pos= None
|
|
|
|
@ -488,7 +487,7 @@ let print_exception_html s exn =
|
|
|
|
|
| Some ocaml_pos ->
|
|
|
|
|
" " ^ L.ocaml_pos_to_string ocaml_pos
|
|
|
|
|
in
|
|
|
|
|
L.d_printfln ~color:Red "%s%s %a%s" s error.name.IssueType.unique_id Localise.pp_error_desc
|
|
|
|
|
L.d_printfln ~color:Red "%s%s %a%s" s error.issue_type.unique_id Localise.pp_error_desc
|
|
|
|
|
error.description ocaml_pos_string
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -507,10 +506,10 @@ let severity_string = function
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(** pretty print an error *)
|
|
|
|
|
let pp_err loc severity ex_name desc ocaml_pos_opt fmt () =
|
|
|
|
|
let pp_err loc severity issue_type desc ocaml_pos_opt fmt () =
|
|
|
|
|
let kind = severity_string (if equal_severity severity Info then Warning else severity) in
|
|
|
|
|
F.fprintf fmt "%a:%d: %s: %a %a%a@\n" SourceFile.pp loc.Location.file loc.Location.line kind
|
|
|
|
|
IssueType.pp ex_name Localise.pp_error_desc desc L.pp_ocaml_pos_opt ocaml_pos_opt
|
|
|
|
|
IssueType.pp issue_type Localise.pp_error_desc desc L.pp_ocaml_pos_opt ocaml_pos_opt
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(** Return true if the exception is not serious and should be handled in timeout mode *)
|
|
|
|
|