jon.recoil.org

Module Typedecl_variance

type surface_variance = bool * bool * bool
type prop = Types.Variance.t list
type variance_variable_context =
  1. | Type_declaration of {
    1. id : Ident.t;
    2. decl : Types.type_declaration;
    3. unboxed_version : bool;
    }
  2. | Gadt_constructor of Types.constructor_declaration
  3. | Extension_constructor of Ident.t * Types.extension_constructor
type variance_variable_error =
  1. | No_variable
  2. | Variance_not_reflected
  3. | Variance_not_deducible
type variance_error =
  1. | Variance_not_satisfied of int
  2. | Variance_variable_error of {
    1. error : Typedecl_variance.variance_variable_error;
    2. context : Typedecl_variance.variance_variable_context;
    3. variable : Types.type_expr;
    }
exception Error of Location.t * Typedecl_variance.error
val compute_decl : Env.t -> check:(Ident.t * bool) option -> Types.type_declaration -> Typedecl_variance.req -> Types.Variance.t list