Skip to content

Commit 45d0b2f

Browse files
authored
porting render continue (#1148)
1 parent b2a41ce commit 45d0b2f

File tree

1 file changed

+91
-16
lines changed

1 file changed

+91
-16
lines changed

src/nimony/renderer.nim

Lines changed: 91 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)