@@ -578,11 +578,28 @@ proc gproc(g: var SrcGen, n: var Cursor) =
578578 else :
579579 discard
580580
581- proc gcall (g: var SrcGen , n: var Cursor ) =
582- inc n
583- gsub (g, n)
584- put (g, tkParLe, " (" )
581+ proc bracketKind (g: SrcGen , n: Cursor ): BracketKind =
582+ if renderIds notin g.flags:
583+ if n.exprKind in {OchoiceX , CchoiceX }:
584+ var firstSon = n
585+ inc firstSon
586+ result = bracketKind (g, firstSon)
587+ elif n.kind == Symbol :
588+ var name = pool.syms[n.symId]
589+ extractBasename (name)
590+
591+ case name
592+ of " []" : result = bkBracket
593+ of " []=" : result = bkBracketAsgn
594+ of " {}" : result = bkCurly
595+ of " {}=" : result = bkCurlyAsgn
596+ else : result = bkNone
597+ else :
598+ result = bkNone
599+ else :
600+ result = bkNone
585601
602+ proc gcallComma (g: var SrcGen , n: var Cursor ) =
586603 var afterFirst = false
587604
588605 while n.kind != ParRi :
@@ -592,8 +609,30 @@ proc gcall(g: var SrcGen, n: var Cursor) =
592609 afterFirst = true
593610 gsub (g, n)
594611
595- put (g, tkParRi, " )" )
596- skipParRi (n)
612+ proc gcall (g: var SrcGen , n: var Cursor ) =
613+ inc n
614+ case bracketKind (g, n)
615+ of bkBracket:
616+ skip n
617+ gsub (g, n)
618+ put (g, tkBracketLe, " [" )
619+ gcallComma (g, n)
620+ put (g, tkBracketRi, " ]" )
621+ skipParRi (n)
622+ of bkCurly:
623+ skip n
624+ gsub (g, n)
625+ put (g, tkCurlyLe, " {" )
626+ gcallComma (g, n)
627+ put (g, tkCurlyRi, " }" )
628+ skipParRi (n)
629+ of bkNone, bkPar, bkBracketAsgn, bkCurlyAsgn:
630+ # TODO :
631+ gsub (g, n)
632+ put (g, tkParLe, " (" )
633+ gcallComma (g, n)
634+ put (g, tkParRi, " )" )
635+ skipParRi (n)
597636
598637proc gcallsystem (g: var SrcGen , n: var Cursor ; name: string ) =
599638 inc n
0 commit comments