mirror of
https://github.com/CatalaLang/catala.git
synced 2024-09-20 00:41:05 +03:00
error on empty everywhere
This commit is contained in:
parent
c3268cc13c
commit
84cd6ddc61
@ -243,9 +243,35 @@ and translate_expr (ctx : ctx) (e : D.expr Pos.marked) : A.expr Pos.marked Bindl
|
|||||||
| D.EDefault (exceptions, just, cons) ->
|
| D.EDefault (exceptions, just, cons) ->
|
||||||
translate_default ctx exceptions just cons (Pos.get_position e)
|
translate_default ctx exceptions just cons (Pos.get_position e)
|
||||||
|
|
||||||
| D.ErrorOnEmpty _ ->
|
| D.ErrorOnEmpty arg ->
|
||||||
|
|
||||||
Errors.raise_spanned_error "Internal error: Error on empty found in incorrect place when compiling using the --avoid_exception option." (Pos.get_position e)
|
(* we need to be carefull on this one *)
|
||||||
|
|
||||||
|
begin
|
||||||
|
(* ~> match [| arg |] with None -> raise NoValueProvided | Some x -> x *)
|
||||||
|
let pos_arg = Pos.get_position arg in
|
||||||
|
let x = A.Var.make ("result", pos_arg) in
|
||||||
|
let arg = translate_expr ctx arg in
|
||||||
|
|
||||||
|
let tau = (D.TAny, pos_arg) in
|
||||||
|
|
||||||
|
let e3 =
|
||||||
|
A.make_abs
|
||||||
|
(Array.of_list [ x ])
|
||||||
|
(let+ v = Bindlib.box_var x in (v, pos_arg))
|
||||||
|
pos_arg [ tau ] pos_arg
|
||||||
|
and e1 = arg
|
||||||
|
and e2 =
|
||||||
|
A.make_abs
|
||||||
|
(Array.of_list [ x ])
|
||||||
|
(Bindlib.box @@ (A.ERaise A.NoValueProvided, Pos.get_position e))
|
||||||
|
pos_arg [ tau ] pos_arg
|
||||||
|
in
|
||||||
|
|
||||||
|
A.make_some @@ A.make_matchopt e1 e2 e3
|
||||||
|
end
|
||||||
|
|
||||||
|
(* Errors.raise_spanned_error "Internal error: Error on empty found in incorrect place when compiling using the --avoid_exception option." (Pos.get_position e) *)
|
||||||
|
|
||||||
|
|
||||||
let rec translate_scope_vardefinition ctx expr: A.expr Pos.marked Bindlib.box =
|
let rec translate_scope_vardefinition ctx expr: A.expr Pos.marked Bindlib.box =
|
||||||
|
Loading…
Reference in New Issue
Block a user