Typedecl_variance
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
val property : (Types.Variance.t list, req) Typedecl_properties.property
type variance_variable_context =
| Type_declaration of Ident.t * Types.type_declaration
| Gadt_constructor of Types.constructor_declaration
| Extension_constructor of Ident.t * Types.extension_constructor
type variance_error =
| Variance_not_satisfied of int
| Variance_variable_error of {
error : variance_variable_error;
context : variance_variable_context;
variable : Types.type_expr;
}
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:Ident.t option ->
Types.type_declaration ->
req ->
prop
val update_decls :
Env.t ->
Parsetree.type_declaration list ->
(Ident.t * Types.type_declaration) list ->
(Ident.t * Types.type_declaration) list
val update_class_decls :
Env.t ->
(Ident.t
* Typedecl_properties.decl
* Types.class_declaration
* Types.class_type_declaration
* 'a Typedtree.class_infos)
list ->
(Typedecl_properties.decl
* Types.class_declaration
* Types.class_type_declaration)
list