Skip to content

Commit 44c0b60

Browse files
committed
Default fields WIP
1 parent 3ba3307 commit 44c0b60

File tree

6 files changed

+485
-435
lines changed

6 files changed

+485
-435
lines changed

compiler/ccgstmts.nim

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1213,9 +1213,8 @@ proc genCaseObjDiscMapping(p: BProc, e: PNode, t: PType, field: PSym; d: var TLo
12131213
expr(p, call, d)
12141214

12151215
proc asgnFieldDiscriminant(p: BProc, e: PNode) =
1216+
var dotExpr = e[0]
12161217
var a, tmp: TLoc
1217-
var dotExpr = e.sons[0]
1218-
if dotExpr.kind == nkCheckedFieldExpr: dotExpr = dotExpr.sons[0]
12191218
initLocExpr(p, e.sons[0], a)
12201219
getTemp(p, a.t, tmp)
12211220
expr(p, e.sons[1], tmp)

compiler/parser.nim

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1002,7 +1002,7 @@ proc parseIdentColonEquals(p: var TParser, flags: TDeclaredIdentFlags): PNode =
10021002
optInd(p, result)
10031003
addSon(result, parseExpr(p))
10041004
else:
1005-
addSon(result, newNodeP(nkEmpty, p))
1005+
addSon(result, p.emptyNode)
10061006

10071007
proc parseTuple(p: var TParser, indentAllowed = false): PNode =
10081008
#| inlTupleDecl = 'tuple'
@@ -1899,11 +1899,17 @@ proc parseObjectCase(p: var TParser): PNode =
18991899
#| | IND{=} objectBranches)
19001900
result = newNodeP(nkRecCase, p)
19011901
getTokNoInd(p)
1902-
var a = newNodeP(nkIdentDefs, p)
1903-
addSon(a, identWithPragma(p))
1904-
eat(p, tkColon)
1905-
addSon(a, parseTypeDesc(p))
1906-
addSon(a, p.emptyNode)
1902+
var a = parseIdentColonEquals(p, {withPragma})
1903+
# var a = newNodeP(nkIdentDefs, p)
1904+
# addSon(a, identWithPragma(p))
1905+
# eat(p, tkColon)
1906+
# addSon(a, parseTypeDesc(p))
1907+
# if p.tok.tokType == tkEquals:
1908+
# getTok(p)
1909+
# optInd(p, result)
1910+
# addSon(a, parseExpr(p))
1911+
# else:
1912+
# addSon(a, p.emptyNode)
19071913
addSon(result, a)
19081914
if p.tok.tokType == tkColon: getTok(p)
19091915
flexComment(p, result)

0 commit comments

Comments
 (0)