|
|
|
(*
|
|
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
|
|
*
|
|
|
|
* This source code is licensed under the MIT license found in the
|
|
|
|
* LICENSE file in the root directory of this source tree.
|
|
|
|
*)
|
|
|
|
open! IStd
|
|
|
|
module F = Format
|
|
|
|
|
|
|
|
type t =
|
|
|
|
| Call of Procname.t
|
|
|
|
| Model of string
|
|
|
|
| SkippedKnownCall of Procname.t
|
|
|
|
| SkippedUnknownCall of Exp.t
|
|
|
|
[@@deriving compare]
|
|
|
|
|
|
|
|
let pp_config ~verbose fmt =
|
|
|
|
let pp_proc_name = if verbose then Procname.pp else Procname.describe in
|
|
|
|
function
|
|
|
|
| Call proc_name ->
|
|
|
|
F.fprintf fmt "`%a`" pp_proc_name proc_name
|
|
|
|
| Model model ->
|
|
|
|
F.fprintf fmt "`%s` (modelled)" model
|
|
|
|
| SkippedKnownCall proc_name ->
|
|
|
|
F.fprintf fmt "function `%a` with no summary" pp_proc_name proc_name
|
|
|
|
| SkippedUnknownCall call_exp ->
|
|
|
|
F.fprintf fmt "unresolved call expression `%a`" Exp.pp call_exp
|
|
|
|
|
|
|
|
|
|
|
|
let pp = pp_config ~verbose:true
|
|
|
|
|
|
|
|
let describe = pp_config ~verbose:false
|