@@ -189,6 +189,8 @@ func add(result: var string, id: LabelId) =
189189 result .add 'L'
190190 result .addInt id.uint32
191191
192+ proc constToStr (nodes: MirTree , i: var int , result: var string , c: RenderCtx )
193+
192194proc singleToStr (n: MirNode , result: var string , c: RenderCtx ) =
193195 case n.kind
194196 of mnkParam:
@@ -197,7 +199,12 @@ proc singleToStr(n: MirNode, result: var string, c: RenderCtx) =
197199 result .addLocalName (n.local, " <L" , c)
198200 of mnkConst:
199201 if isAnon (n.cnst):
200- idToStr (result , extract (n.cnst), " <D" ) # "D" for "Data"
202+ if c.env.isNil:
203+ idToStr (result , extract (n.cnst), " <D" ) # "D" for "Data"
204+ else :
205+ result .add " <const> "
206+ var i = 0
207+ constToStr (c.env[][extract (n.cnst)], i, result , c)
201208 else :
202209 result .addName (n.cnst, " <C" , c)
203210 of mnkGlobal:
@@ -483,6 +490,62 @@ proc exprToStr(nodes: MirTree, i: var int, result: var string, c: RenderCtx) =
483490template exprToStr () =
484491 exprToStr (nodes, i, result , c)
485492
493+ proc constToStr (nodes: MirTree , i: var int , result: var string , c: RenderCtx ) =
494+ template arg () =
495+ inc i # skip the operand descriptor
496+ constToStr (nodes, i, result , c)
497+
498+ template tree (start: string , body: untyped ) =
499+ result .add start
500+ body
501+
502+ let n {.cursor .} = next (nodes, i)
503+ case n.kind
504+ of mnkNilLit, mnkIntLit, mnkUIntLit, mnkFloatLit, mnkStrLit, mnkProcVal,
505+ mnkAstLit:
506+ singleToStr (n, result , c)
507+ of mnkObjConstr, mnkRefConstr:
508+ let typ = n.typ
509+ tree " (" :
510+ commaSeparated n.len:
511+ tree " " :
512+ fieldToStr (next (nodes, i).field, typ, result , c)
513+ result .add " : "
514+ constToStr (nodes, i, result , c)
515+ result .add " )"
516+ of mnkArrayConstr:
517+ tree " [" :
518+ commaSeparated n.len:
519+ arg ()
520+ result .add " ]"
521+ of mnkSeqConstr:
522+ tree " @[" :
523+ commaSeparated n.len:
524+ arg ()
525+ result .add " ]"
526+ of mnkTupleConstr:
527+ tree " (" :
528+ commaSeparated n.len:
529+ arg ()
530+ result .add " )"
531+ of mnkClosureConstr:
532+ tree " closure (" :
533+ commaSeparated n.len:
534+ arg ()
535+ result .add " )"
536+ of mnkSetConstr:
537+ tree " {" :
538+ commaSeparated n.len:
539+ constToStr (nodes, i, result , c)
540+ result .add " }"
541+ of mnkRange:
542+ tree " " :
543+ constToStr (nodes, i, result , c)
544+ result .add " .. "
545+ constToStr (nodes, i, result , c)
546+ else :
547+ result .error (n)
548+
486549proc renderNameWithType (tree: MirTree , i: var int , result: var string ,
487550 c: RenderCtx ) =
488551 let n {.cursor .} = next (tree, i)
0 commit comments