Skip to content

Commit b5fcd33

Browse files
committed
---
yaml --- r: 814 b: refs/heads/master c: 11deb2f h: refs/heads/master v: v3
1 parent 2fc6d47 commit b5fcd33

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: 4bb675ba4243314baf3b41dbea01511fdc3ae729
2+
refs/heads/master: 11deb2f5f1ef731a48e8637a140203a40f9ad303

trunk/src/boot/me/type.ml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,39 @@ let rec friendly_stringify cx fallback ty =
7575
let fn_args_str = String.concat ", " (Array.to_list fn_args) in
7676
let fn_rv_str = format_slot fnsig.Ast.sig_output_slot in
7777
Printf.sprintf "fn(%s) -> %s" fn_args_str fn_rv_str
78+
| Ast.TY_tag { Ast.tag_id = tag_id; Ast.tag_args = args } ->
79+
let tag_info = Hashtbl.find cx.Semant.ctxt_all_tag_info tag_id in
80+
let tag_idents = tag_info.Semant.tag_idents in
81+
let item_id = ref None in
82+
(* Ugly hack ahead... *)
83+
begin
84+
try
85+
Hashtbl.iter
86+
begin
87+
fun _ (_, item_id', _) ->
88+
item_id := Some item_id'; raise Exit
89+
end
90+
tag_idents
91+
with Exit -> ();
92+
end;
93+
begin
94+
match !item_id with
95+
None -> fallback ty
96+
| Some item_id ->
97+
let item_types = cx.Semant.ctxt_all_item_types in
98+
let ty = Hashtbl.find item_types item_id in
99+
let args_suffix =
100+
if Array.length args == 0 then ""
101+
else
102+
Printf.sprintf "[%s]"
103+
(String.concat ","
104+
(Array.to_list
105+
(Array.map
106+
(friendly_stringify cx fallback)
107+
args)))
108+
in
109+
(friendly_stringify cx fallback ty) ^ args_suffix
110+
end
78111

79112
| _ -> fallback ty (* TODO: we can do better for objects *)
80113

0 commit comments

Comments
 (0)