A struct value's printed head comes from Render.head, which every renderer shares
This commit is contained in:
parent
ff8b61e44c
commit
df00848910
@ -103,6 +103,12 @@ let print_refusal _loc t =
|
||||
Printf.sprintf "no printer for %s — print the values you want out of it"
|
||||
(Types.to_string t)
|
||||
|
||||
(* The head a struct value prints under: its name, or for a generic struct's
|
||||
copy the template and its arguments, [Pair i32], so the value reads
|
||||
[(Pair i32 {.a 1 .b 2})] the way its type is written. Every renderer of a
|
||||
struct value goes through this, so they all print the same text. *)
|
||||
let head n = Types.struct_head n
|
||||
|
||||
let rec render ?(refuse = print_refusal) c depth (e : Tast.expr) : Tast.expr list =
|
||||
let render c depth e = render ~refuse c depth e in
|
||||
let loc = e.Tast.loc in
|
||||
@ -333,7 +339,7 @@ let rec render ?(refuse = print_refusal) c depth (e : Tast.expr) : Tast.expr lis
|
||||
@ render c (depth + 1) v)
|
||||
shown)
|
||||
in
|
||||
[ do_ ((lit ("(" ^ Types.struct_head n ^ " {") :: parts)
|
||||
[ do_ ((lit ("(" ^ head n ^ " {") :: parts)
|
||||
@ (if List.length fields > max_span then [ lit " ..." ] else [])
|
||||
@ [ lit "})" ]) ])
|
||||
(* A fixed array's length is in its type, so it unrolls — capped, because
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user