This repository was archived by the owner on Apr 25, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 4 files changed +24
-8
lines changed
Expand file tree Collapse file tree 4 files changed +24
-8
lines changed Original file line number Diff line number Diff line change @@ -653,10 +653,14 @@ let rec step (c : config) : config =
653653 Ref r :: vs', []
654654 | FuncRef f when Rtt. match_rtt (Func. read_rtt f) rtt ->
655655 Ref r :: vs', []
656- | Data. DataRef _ | FuncRef _ ->
656+ | Data. DataRef d ->
657657 vs', [Trapping (" cast failure, expected " ^
658- string_of_def_type (Rtt. def_type_of rtt) ^ " but got " ^
659- string_of_value (Ref r)) @@ e.at]
658+ Rtt. string_of_rtt rtt ^ " but got " ^
659+ Rtt. string_of_rtt (Data. read_rtt d)) @@ e.at]
660+ | FuncRef f ->
661+ vs', [Trapping (" cast failure, expected " ^
662+ Rtt. string_of_rtt rtt ^ " but got " ^
663+ Rtt. string_of_rtt (Func. read_rtt f)) @@ e.at]
660664 | _ ->
661665 Crash. error e.at " wrong reference type"
662666 )
Original file line number Diff line number Diff line change @@ -31,6 +31,13 @@ let rec match_rtt rtt1 rtt2 =
3131 | Rtt (_ , None) -> false
3232 | Rtt (_ , Some rtt1' ) -> match_rtt rtt1' rtt2
3333
34+ let rec string_of_rtt (Rtt (x , sup )) =
35+ string_of_var (SemVar x) ^
36+ (match sup with
37+ | None -> " "
38+ | Some rtt' -> " (sub " ^ string_of_rtt rtt' ^ " )"
39+ )
40+
3441
3542let () =
3643 let eq_ref' = ! Value. eq_ref' in
Original file line number Diff line number Diff line change @@ -13,3 +13,5 @@ val def_type_of : rtt -> def_type
1313val depth : rtt -> int32
1414
1515val match_rtt : rtt -> rtt -> bool
16+
17+ val string_of_rtt : rtt -> string
Original file line number Diff line number Diff line change @@ -250,18 +250,21 @@ let string_of_name n =
250250 Buffer. contents b
251251
252252let rec string_of_var =
253- let inner = ref 0 in
253+ let inner = ref [] in
254254 function
255255 | SynVar x -> I32. to_string_u x
256256 | SemVar x ->
257- if ! inner > 3 then " ..." else
258- ( incr inner;
257+ let h = Hashtbl. hash x in
258+ string_of_int h ^
259+ if List. mem h ! inner then " " else
260+ ( inner := h :: ! inner;
259261 try
260262 let s = string_of_def_type (def_of x) in
261- decr inner; " (" ^ s ^ " )"
262- with exn -> inner := 0 ; raise exn
263+ inner := List. tl ! inner; " = (" ^ s ^ " )"
264+ with exn -> inner := [] ; raise exn
263265 )
264266
267+
265268and string_of_nullability = function
266269 | NonNullable -> " "
267270 | Nullable -> " null "
You can’t perform that action at this time.
0 commit comments