File tree Expand file tree Collapse file tree 2 files changed +34
-1
lines changed Expand file tree Collapse file tree 2 files changed +34
-1
lines changed Original file line number Diff line number Diff line change 1
1
---
2
- refs/heads/master: 4bb675ba4243314baf3b41dbea01511fdc3ae729
2
+ refs/heads/master: 11deb2f5f1ef731a48e8637a140203a40f9ad303
Original file line number Diff line number Diff line change @@ -75,6 +75,39 @@ let rec friendly_stringify cx fallback ty =
75
75
let fn_args_str = String. concat " , " (Array. to_list fn_args) in
76
76
let fn_rv_str = format_slot fnsig.Ast. sig_output_slot in
77
77
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
78
111
79
112
| _ -> fallback ty (* TODO: we can do better for objects *)
80
113
You can’t perform that action at this time.
0 commit comments