@@ -1022,9 +1022,11 @@ proc gtry(g: var SrcGen, n: var Cursor) =
10221022 skipParRi (n)
10231023
10241024
1025- proc gconstr (g: var SrcGen , n: var Cursor , kind: BracketKind ) =
1025+ proc gconstr (g: var SrcGen , n: var Cursor , kind: BracketKind , isUntyped = false ) =
10261026 inc n
1027- skip n
1027+
1028+ if not isUntyped:
1029+ skip n
10281030
10291031 case kind
10301032 of bkBracket:
@@ -1316,9 +1318,14 @@ proc gsub(g: var SrcGen, n: var Cursor, c: Context, fromStmtList = false, isTopL
13161318 gcall (g, n)
13171319
13181320 of HighX , LowX , TypeofX ,
1319- SizeofX , AlignofX , OffsetofX , CardX , UnpackX , FieldsX :
1321+ SizeofX , AlignofX , OffsetofX ,
1322+ CardX , UnpackX , FieldsX , CompilesX ,
1323+ DeclaredX , DefinedX :
13201324 gcallsystem (g, n, $ n.exprKind)
13211325
1326+ of ProccallX :
1327+ gcallsystem (g, n, " procCall" )
1328+
13221329 of NewrefX :
13231330 inc n
13241331
@@ -1353,26 +1360,40 @@ proc gsub(g: var SrcGen, n: var Cursor, c: Context, fromStmtList = false, isTopL
13531360 of TraceX :
13541361 gcallsystem (g, n, " =sink" )
13551362
1356- of PrefixX :
1357- # TODO :
1358- gcall (g, n)
1363+ of DefaultobjX , DefaulttupX :
1364+ gcallsystem (g, n, " default" )
13591365
1360- of TupX :
1366+ of InsetX :
1367+ inc n
1368+ put (g, tkSymbol, " contains" )
13611369 put (g, tkParLe, " (" )
13621370
1363- inc n
1371+ skip n
13641372
13651373 var afterFirst = false
1374+
13661375 while n.kind != ParRi :
13671376 if afterFirst:
13681377 gcomma (g)
13691378 else :
13701379 afterFirst = true
13711380 gsub (g, n)
13721381
1382+ put (g, tkParRi, " )" )
13731383 skipParRi (n)
13741384
1375- put (g, tkParRi, " )" )
1385+ of PrefixX :
1386+ # TODO :
1387+ gcall (g, n)
1388+
1389+ of TupX :
1390+ gconstr (g, n, bkPar, isUntyped = true )
1391+
1392+ of BracketX :
1393+ gconstr (g, n, bkBracket, isUntyped = true )
1394+
1395+ of CurlyX :
1396+ gconstr (g, n, bkCurly, isUntyped = true )
13761397
13771398 of TupconstrX :
13781399 gconstr (g, n, bkPar)
@@ -1398,6 +1419,10 @@ proc gsub(g: var SrcGen, n: var Cursor, c: Context, fromStmtList = false, isTopL
13981419 gsub (g, n)
13991420 putWithSpace (g, tkColon, " :" )
14001421 gsub (g, n)
1422+
1423+ if n.kind != ParRi :
1424+ skip n
1425+
14011426 skipParRi (n)
14021427
14031428 skipParRi (n)
@@ -1432,10 +1457,18 @@ proc gsub(g: var SrcGen, n: var Cursor, c: Context, fromStmtList = false, isTopL
14321457 of CmdX :
14331458 gcmd (g, n)
14341459
1460+ of EnumtostrX :
1461+ inc n
1462+ put (g, tkSymbol, " $" )
1463+
1464+ gsub (g, n)
1465+
1466+ skipParRi (n)
1467+
14351468 of InfixX :
14361469 ginfix (g, n)
14371470
1438- of AndX , OrX , XorX :
1471+ of AndX , OrX , XorX , IsX , InstanceofX :
14391472 let opr: string
14401473 case n.exprKind
14411474 of AndX :
@@ -1444,6 +1477,10 @@ proc gsub(g: var SrcGen, n: var Cursor, c: Context, fromStmtList = false, isTopL
14441477 opr = " or"
14451478 of XorX :
14461479 opr = " xor"
1480+ of IsX :
1481+ opr = " is"
1482+ of InstanceofX :
1483+ opr = " of"
14471484 else :
14481485 raiseAssert " unreachable"
14491486 inc n
@@ -1591,7 +1628,7 @@ proc gsub(g: var SrcGen, n: var Cursor, c: Context, fromStmtList = false, isTopL
15911628
15921629 skipParRi (n)
15931630
1594- of HconvX , DconvX :
1631+ of HconvX , DconvX , HcallX :
15951632 inc n
15961633 skip n
15971634 gsub (g, n)
@@ -1602,7 +1639,9 @@ proc gsub(g: var SrcGen, n: var Cursor, c: Context, fromStmtList = false, isTopL
16021639 gsub (g, n)
16031640 put (g, tkDot, " ." )
16041641 gsub (g, n)
1605- skip n
1642+
1643+ if n.kind != ParRi :
1644+ skip n
16061645 skipParRi (n)
16071646
16081647 of PragmaxX :
@@ -1614,11 +1653,45 @@ proc gsub(g: var SrcGen, n: var Cursor, c: Context, fromStmtList = false, isTopL
16141653 put (g, tkParRi, " )" )
16151654 skip n
16161655
1617- else :
1618- # raiseAssert $pool.tags[n.tagId]
1656+ of ErrX :
1657+ put (g, tkStrLit, toString (n, false ))
16191658 skip n
1620- of ParRi :
1621- inc n
1659+
1660+ of QuotedX :
1661+ inc n
1662+ put (g, tkAccent, " `" )
1663+ gsub (g, n, c)
1664+ put (g, tkAccent, " `" )
1665+ skipParRi (n)
1666+
1667+ of TabconstrX :
1668+ inc n
1669+ put (g, tkCurlyLe, " {" )
1670+
1671+ if n.kind != ParRi :
1672+ var afterFirst = false
1673+ while n.kind != ParRi :
1674+ if afterFirst:
1675+ gcomma (g)
1676+ else :
1677+ afterFirst = true
1678+
1679+ assert n.substructureKind == KvU
1680+ inc n
1681+ gsub (g, n, c)
1682+ putWithSpace (g, tkColon, " :" )
1683+ gsub (g, n, c)
1684+ skipParRi (n)
1685+ else :
1686+ put (g, tkColon, " :" )
1687+
1688+ put (g, tkCurlyRi, " }" )
1689+ skipParRi (n)
1690+
1691+ of CurlyatX , IsmainmoduleX ,
1692+ DoX , InternalTypeNameX , InternalFieldPairsX , FailedX :
1693+ raiseAssert " todo"
1694+
16221695 of IntLit :
16231696 put (g, tkIntLit, $ pool.integers[n.intId])
16241697 inc n
@@ -1647,6 +1720,8 @@ proc gsub(g: var SrcGen, n: var Cursor, c: Context, fromStmtList = false, isTopL
16471720 inc n
16481721 of DotToken :
16491722 inc n
1723+ of ParRi :
1724+ discard " for illformed tokens"
16501725 else :
16511726 inc n
16521727
0 commit comments