Typing.Env
val empty :
?fail_on_any:bool ->
?assume_op_types:bool ->
Shared_ast__.Definitions.decl_ctx ->
'e t
The ~fail_on_any
labeled parameter controls the behavior of the typer in the case where polymorphic expressions are still found after typing: if false
, it allows them (giving them TAny
and losing typing information); if set to true
(the default), it aborts.
The ~assume_op_types
flag (default false) ignores the expected built-in types of polymorphic operators, and will assume correct the type information included in EAppOp
nodes. This is useful after monomorphisation, which changes the expected types for these operators.
val add_var :
'e Var.t ->
Shared_ast__.Definitions.naked_typ Catala_utils.Mark.pos ->
'e t ->
'e t
val add_toplevel_var :
Shared_ast__.Definitions.TopdefName.t ->
Shared_ast__.Definitions.naked_typ Catala_utils.Mark.pos ->
'e t ->
'e t
val add_scope_var :
Shared_ast__.Definitions.ScopeVar.t ->
Shared_ast__.Definitions.naked_typ Catala_utils.Mark.pos ->
'e t ->
'e t
val add_scope :
Shared_ast__.Definitions.ScopeName.t ->
vars:
Shared_ast__.Definitions.naked_typ Catala_utils.Mark.pos
Shared_ast__.Definitions.ScopeVar.Map.t ->
in_vars:
Shared_ast__.Definitions.naked_typ Catala_utils.Mark.pos
Shared_ast__.Definitions.ScopeVar.Map.t ->
'e t ->
'e t
val dump : Stdlib.Format.formatter -> 'e t -> unit
For debug purposes