Module Textual.ProcDecl

type t = {
  1. qualified_name : QualifiedProcName.t;
  2. formals_types : Typ.annotated list option;
    (*

    The list of formal argument types may be unknown. Currently, it is possible only for external function declarations when translating from Hack and is denoted with a special ... syntax. Functions defined within a textual module always have a fully declared list of formal parameters.

    *)
  3. result_type : Typ.annotated;
  4. attributes : Attr.t list;
}
val formals_or_die : ?context:string -> t -> Typ.annotated list
val to_sig : t -> Lang.t option -> ProcSig.t
val pp : F.formatter -> t -> unit
val to_unop : QualifiedProcName.t -> IR.Unop.t option
val to_binop : QualifiedProcName.t -> IR.Binop.t option
val is_cast_builtin : QualifiedProcName.t -> bool
val is_generics_constructor_builtin : QualifiedProcName.t -> bool
val is_instanceof_builtin : QualifiedProcName.t -> bool
val allocate_object_name : QualifiedProcName.t
val is_allocate_object_builtin : QualifiedProcName.t -> bool
val allocate_array_name : QualifiedProcName.t
val is_allocate_array_builtin : QualifiedProcName.t -> bool
val is_get_lazy_class_builtin : QualifiedProcName.t -> bool
val is_lazy_class_initialize_builtin : QualifiedProcName.t -> bool
val is_side_effect_free_sil_expr : QualifiedProcName.t -> bool
val is_not_regular_proc : QualifiedProcName.t -> bool
val is_curry_invoke : t -> bool
val is_variadic : t -> bool