Module Typedecl_variance

type surface_variance = bool * bool * bool
val variance_of_params : (Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list -> surface_variance list
val variance_of_sdecl : Parsetree.type_declaration -> surface_variance list
type prop = Types.Variance.t list
type req = surface_variance list
type variance_error =
| Variance_not_satisfied of int
| No_variable
| Variance_not_reflected
| Variance_not_deducible
type error =
| Bad_variance of variance_error * surface_variance * surface_variance
| Varying_anonymous
exception Error of Location.t * error
val check_variance_extension : Env.t -> Types.type_declaration -> Typedtree.extension_constructor -> (req * Location.t) -> unit
val compute_decl : Env.t -> check:bool -> Types.type_declaration -> req -> prop