Module Flow_ast.Function

module RestParam: { ... };
module Param: { ... };
module ThisParam: { ... };
module Params: { ... };
module ReturnAnnot: { ... };
type effect_ =
  1. | Hook
  2. | Arbitrary
;
let pp_effect_: Format.formatter => effect_ => unit;
let show_effect_: effect_ => string;
type t('M, 'T) = {
  1. id: option(Identifier.t('M, 'T)),
  2. params: Params.t('M, 'T),
  3. body: body('M, 'T),
  4. async: bool,
  5. generator: bool,
  6. effect_: effect_,
  7. predicate: option(Type.Predicate.t('M, 'T)),
  8. return: ReturnAnnot.t('M, 'T),
  9. tparams: option(Type.TypeParams.t('M, 'T)),
  10. comments: option(Syntax.t('M, unit)),
  11. sig_loc: 'M,
};
and body('M, 'T) =
  1. | BodyBlock(('M, Statement.Block.t('M, 'T)))
  2. | BodyExpression(Expression.t('M, 'T))
;
let pp: (Format.formatter => 'M => unit) => (Format.formatter => 'T => unit) => Format.formatter => t('M, 'T) => unit;
let show: (Format.formatter => 'M => unit) => (Format.formatter => 'T => unit) => t('M, 'T) => string;
let pp_body: (Format.formatter => 'M => unit) => (Format.formatter => 'T => unit) => Format.formatter => body('M, 'T) => unit;
let show_body: (Format.formatter => 'M => unit) => (Format.formatter => 'T => unit) => body('M, 'T) => string;