|
@@ -205,7 +205,7 @@ and expr_def =
|
|
| ECall of expr * expr list
|
|
| ECall of expr * expr list
|
|
| ENew of placed_type_path * expr list
|
|
| ENew of placed_type_path * expr list
|
|
| EUnop of unop * unop_flag * expr
|
|
| EUnop of unop * unop_flag * expr
|
|
- | EVars of (placed_name * bool * type_hint option * expr option) list
|
|
|
|
|
|
+ | EVars of (placed_name * bool * type_hint option * expr option * metadata) list
|
|
| EFunction of function_kind * func
|
|
| EFunction of function_kind * func
|
|
| EBlock of expr list
|
|
| EBlock of expr list
|
|
| EFor of expr * expr
|
|
| EFor of expr * expr
|
|
@@ -666,10 +666,10 @@ let map_expr loop (e,p) =
|
|
ENew (t,el)
|
|
ENew (t,el)
|
|
| EUnop (op,f,e) -> EUnop (op,f,loop e)
|
|
| EUnop (op,f,e) -> EUnop (op,f,loop e)
|
|
| EVars vl ->
|
|
| EVars vl ->
|
|
- EVars (List.map (fun (n,b,t,eo) ->
|
|
|
|
|
|
+ EVars (List.map (fun (n,b,t,eo,ml) ->
|
|
let t = opt type_hint t in
|
|
let t = opt type_hint t in
|
|
let eo = opt loop eo in
|
|
let eo = opt loop eo in
|
|
- n,b,t,eo
|
|
|
|
|
|
+ n,b,t,eo,ml
|
|
) vl)
|
|
) vl)
|
|
| EFunction (kind,f) -> EFunction (kind,func f)
|
|
| EFunction (kind,f) -> EFunction (kind,func f)
|
|
| EBlock el -> EBlock (List.map loop el)
|
|
| EBlock el -> EBlock (List.map loop el)
|
|
@@ -750,7 +750,7 @@ let iter_expr loop (e,p) =
|
|
| EFunction(_,f) ->
|
|
| EFunction(_,f) ->
|
|
List.iter (fun (_,_,_,_,eo) -> opt eo) f.f_args;
|
|
List.iter (fun (_,_,_,_,eo) -> opt eo) f.f_args;
|
|
opt f.f_expr
|
|
opt f.f_expr
|
|
- | EVars vl -> List.iter (fun (_,_,_,eo) -> opt eo) vl
|
|
|
|
|
|
+ | EVars vl -> List.iter (fun (_,_,_,eo,_) -> opt eo) vl
|
|
|
|
|
|
let s_object_key_name name = function
|
|
let s_object_key_name name = function
|
|
| DoubleQuotes -> "\"" ^ StringHelper.s_escape name ^ "\""
|
|
| DoubleQuotes -> "\"" ^ StringHelper.s_escape name ^ "\""
|
|
@@ -885,8 +885,10 @@ module Printer = struct
|
|
if List.length tl > 0 then "<" ^ String.concat ", " (List.map (s_type_param tabs) tl) ^ ">" else ""
|
|
if List.length tl > 0 then "<" ^ String.concat ", " (List.map (s_type_param tabs) tl) ^ ">" else ""
|
|
and s_func_arg tabs ((n,_),o,_,t,e) =
|
|
and s_func_arg tabs ((n,_),o,_,t,e) =
|
|
if o then "?" else "" ^ n ^ s_opt_type_hint tabs t ":" ^ s_opt_expr tabs e " = "
|
|
if o then "?" else "" ^ n ^ s_opt_type_hint tabs t ":" ^ s_opt_expr tabs e " = "
|
|
- and s_var tabs ((n,_),_,t,e) =
|
|
|
|
- n ^ (s_opt_type_hint tabs t ":") ^ s_opt_expr tabs e " = "
|
|
|
|
|
|
+ and s_var tabs ((n,_),_,t,e,ml) =
|
|
|
|
+ let s = n ^ (s_opt_type_hint tabs t ":") ^ s_opt_expr tabs e " = " in
|
|
|
|
+ if ml = [] then s
|
|
|
|
+ else (String.concat " " (List.map (s_metadata tabs) ml)) ^ " " ^ s
|
|
and s_case tabs (el,e1,e2,_) =
|
|
and s_case tabs (el,e1,e2,_) =
|
|
"case " ^ s_expr_list tabs el ", " ^
|
|
"case " ^ s_expr_list tabs el ", " ^
|
|
(match e1 with None -> ":" | Some e -> " if (" ^ s_expr_inner tabs e ^ "):") ^
|
|
(match e1 with None -> ":" | Some e -> " if (" ^ s_expr_inner tabs e ^ "):") ^
|
|
@@ -1032,7 +1034,7 @@ module Expr = struct
|
|
loop e1
|
|
loop e1
|
|
| EVars vl ->
|
|
| EVars vl ->
|
|
add "EVars";
|
|
add "EVars";
|
|
- List.iter (fun ((n,p),_,cto,eo) ->
|
|
|
|
|
|
+ List.iter (fun ((n,p),_,cto,eo,_) ->
|
|
add (Printf.sprintf "%s %s%s" tabs n (match cto with None -> "" | Some (ct,_) -> ":" ^ Printer.s_complex_type "" ct));
|
|
add (Printf.sprintf "%s %s%s" tabs n (match cto with None -> "" | Some (ct,_) -> ":" ^ Printer.s_complex_type "" ct));
|
|
match eo with
|
|
match eo with
|
|
| None -> ()
|
|
| None -> ()
|