Driver.Passes
Compiler passes
Each pass takes only its cli options, then calls upon its dependent passes (forwarding their options as needed)
val surface : Catala_utils.Global.options -> Surface.Ast.program
val desugared :
Catala_utils.Global.options ->
includes:Catala_utils.Global.raw_file list ->
Desugared.Ast.program * Desugared.Name_resolution.context
val scopelang :
Catala_utils.Global.options ->
includes:Catala_utils.Global.raw_file list ->
Shared_ast.untyped Scopelang.Ast.program
val dcalc :
Catala_utils.Global.options ->
includes:Catala_utils.Global.raw_file list ->
optimize:bool ->
check_invariants:bool ->
autotest:bool ->
typed:'m Shared_ast.mark ->
'm Dcalc.Ast.program * Shared_ast.TypeIdent.t list
val lcalc :
Catala_utils.Global.options ->
includes:Catala_utils.Global.raw_file list ->
optimize:bool ->
check_invariants:bool ->
autotest:bool ->
typed:'m Shared_ast.mark ->
closure_conversion:bool ->
keep_special_ops:bool ->
monomorphize_types:bool ->
expand_ops:bool ->
renaming:Shared_ast.Renaming.t option ->
Shared_ast.typed Lcalc.Ast.program
* Shared_ast.TypeIdent.t list
* Shared_ast.Renaming.context option
val scalc :
Catala_utils.Global.options ->
includes:Catala_utils.Global.raw_file list ->
optimize:bool ->
check_invariants:bool ->
autotest:bool ->
closure_conversion:bool ->
keep_special_ops:bool ->
dead_value_assignment:bool ->
no_struct_literals:bool ->
monomorphize_types:bool ->
expand_ops:bool ->
renaming:Shared_ast.Renaming.t option ->
Scalc.Ast.program * Shared_ast.TypeIdent.t list * Shared_ast.Renaming.context