diff options
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/sem.nim | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/compiler/sem.nim b/compiler/sem.nim index bac029fb9..3b20579d5 100644 --- a/compiler/sem.nim +++ b/compiler/sem.nim @@ -578,14 +578,14 @@ proc defaultFieldsForTuple(c: PContext, recNode: PNode, hasDefault: var bool): s result.add newTree(nkExprColonExpr, recNode, asgnExpr) return - let asgnType = newType(tyTypeDesc, nextTypeId(c.idgen), recType.owner) - rawAddSon(asgnType, recType) + let asgnType = newType(tyTypeDesc, nextTypeId(c.idgen), recNode.typ.owner) + rawAddSon(asgnType, recNode.typ) let asgnExpr = newTree(nkCall, newSymNode(getSysMagic(c.graph, recNode.info, "zeroDefault", mZeroDefault)), newNodeIT(nkType, recNode.info, asgnType) ) asgnExpr.flags.incl nfSkipFieldChecking - asgnExpr.typ = recType + asgnExpr.typ = recNode.typ result.add newTree(nkExprColonExpr, recNode, asgnExpr) else: doAssert false @@ -615,9 +615,9 @@ proc defaultFieldsForTheUninitialized(c: PContext, recNode: PNode): seq[PNode] = if field.ast != nil: #Try to use default value result.add newTree(nkExprColonExpr, recNode, field.ast) elif recType.kind in {tyObject, tyArray, tyTuple}: - let asgnExpr = defaultNodeField(c, recNode, recType) + let asgnExpr = defaultNodeField(c, recNode, recNode.typ) if asgnExpr != nil: - asgnExpr.typ = recType + asgnExpr.typ = recNode.typ asgnExpr.flags.incl nfSkipFieldChecking result.add newTree(nkExprColonExpr, recNode, asgnExpr) else: @@ -628,8 +628,8 @@ proc defaultNodeField(c: PContext, a: PNode, aTyp: PType): PNode = if aTypSkip.kind == tyObject: let child = defaultFieldsForTheUninitialized(c, aTypSkip.n) if child.len > 0: - var asgnExpr = newTree(nkObjConstr, newNodeIT(nkType, a.info, aTypSkip)) - asgnExpr.typ = aTypSkip + var asgnExpr = newTree(nkObjConstr, newNodeIT(nkType, a.info, aTyp)) + asgnExpr.typ = aTyp asgnExpr.sons.add child result = semExpr(c, asgnExpr) elif aTypSkip.kind == tyArray: |