Commit f7a63894 authored by Julien Lopez's avatar Julien Lopez
Browse files

[TESTS][LAMBDA] Add special variable "_"

parent d28447e7
...@@ -51,14 +51,18 @@ let rec _to_typed env l expr = ...@@ -51,14 +51,18 @@ let rec _to_typed env l expr =
env, l, { exp_loc=loc; exp_typ=type_of_string "Int"; env, l, { exp_loc=loc; exp_typ=type_of_string "Int";
exp_descr=Op(op, 0, [e1; e2]) } exp_descr=Op(op, 0, [e1; e2]) }
| Var (origloc, vname) -> | Var (origloc, vname) ->
let line = Loc.start_line origloc in
let cbegin = Loc.start_off origloc - Loc.start_bol origloc in
let cend = Loc.stop_off origloc - Loc.start_bol origloc in
if vname = "`nil" then if vname = "`nil" then
let nil_atom = Atoms.V.mk_ascii "nil" in let nil_atom = Atoms.V.mk_ascii "nil" in
env, l, { exp_loc=loc; exp_typ=(Types.atom (Atoms.atom nil_atom)); env, l, { exp_loc=loc; exp_typ=(Types.atom (Atoms.atom nil_atom));
exp_descr=(Cst (Types.Atom nil_atom)) } exp_descr=(Cst (Types.Atom nil_atom)) }
else if vname = "_" then
(Printf.eprintf
"File %s, line %d, characters %d-%d:\nError: Invalid reference to special variable %s\n"
(Loc.file_name origloc) line cbegin cend vname; raise Error)
else else
let line = Loc.start_line origloc in
let cbegin = Loc.start_off origloc - Loc.start_bol origloc in
let cend = Loc.stop_off origloc - Loc.start_bol origloc in
let index, vtype = let index, vtype =
try Locals.find vname l try Locals.find vname l
with Not_found -> Printf.eprintf with Not_found -> Printf.eprintf
...@@ -221,6 +225,8 @@ and parse_match_value env l list toptype = function ...@@ -221,6 +225,8 @@ and parse_match_value env l list toptype = function
let nil_atom = Atoms.V.mk_ascii "nil" in let nil_atom = Atoms.V.mk_ascii "nil" in
let t = Types.atom (Atoms.atom nil_atom) in let t = Types.atom (Atoms.atom nil_atom) in
(t, Patterns.Constr(t), list, l, true) (t, Patterns.Constr(t), list, l, true)
else if mname = "_" then
(Types.any, Patterns.Constr(Types.any), list, l, true)
else else
let lsize = Locals.cardinal l in let lsize = Locals.cardinal l in
let l = Locals.add mname (lsize, type_of_ptype mtype) l in let l = Locals.add mname (lsize, type_of_ptype mtype) l in
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment