Skip to content

Commit

Permalink
fixes #13281 (#13282)
Browse files Browse the repository at this point in the history
* fixes ##13281

* add comment to test
  • Loading branch information
cooldome authored and Araq committed Jan 28, 2020
1 parent c841865 commit 46bfb59
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 5 deletions.
8 changes: 4 additions & 4 deletions compiler/semtypes.nim
Original file line number Diff line number Diff line change
Expand Up @@ -698,7 +698,7 @@ proc semRecordCase(c: PContext, n: PNode, check: var IntSet, pos: var int,
father.add a

proc semRecordNodeAux(c: PContext, n: PNode, check: var IntSet, pos: var int,
father: PNode, rectype: PType, hasCaseFields = false) =
father: PNode, rectype: PType, hasCaseFields: bool) =
if n == nil: return
case n.kind
of nkRecWhen:
Expand Down Expand Up @@ -727,12 +727,12 @@ proc semRecordNodeAux(c: PContext, n: PNode, check: var IntSet, pos: var int,
assign(newCheck, check)
var newPos = pos
var newf = newNodeI(nkRecList, n.info)
semRecordNodeAux(c, it[idx], newCheck, newPos, newf, rectype)
semRecordNodeAux(c, it[idx], newCheck, newPos, newf, rectype, hasCaseFields)
it[idx] = if newf.len == 1: newf[0] else: newf
if c.inGenericContext > 0:
father.add n
elif branch != nil:
semRecordNodeAux(c, branch, check, pos, father, rectype)
semRecordNodeAux(c, branch, check, pos, father, rectype, hasCaseFields)
of nkRecCase:
semRecordCase(c, n, check, pos, father, rectype)
of nkNilLit:
Expand All @@ -741,7 +741,7 @@ proc semRecordNodeAux(c: PContext, n: PNode, check: var IntSet, pos: var int,
# attempt to keep the nesting at a sane level:
var a = if father.kind == nkRecList: father else: copyNode(n)
for i in 0..<n.len:
semRecordNodeAux(c, n[i], check, pos, a, rectype)
semRecordNodeAux(c, n[i], check, pos, a, rectype, hasCaseFields)
if a != father: father.add a
of nkIdentDefs:
checkMinSonsLen(n, 3, c.config)
Expand Down
18 changes: 17 additions & 1 deletion tests/ccgbugs/tcgbug.nim
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ discard """
output: '''
success
M1 M2
ok
'''
"""

Expand Down Expand Up @@ -39,7 +40,8 @@ type
var k = PFuture[void]()


##bug #9297
##bug #9297 and #13281

import strutils

type
Expand All @@ -58,6 +60,14 @@ type
of M2: b:float
of M3: c:cstring

Helper* {.exportc: "PublicHelper".} = object
case isKind: bool
of true:
formatted: string
of false:
parsed1: string
parsed2: string

proc newMyObject(kind: MyKind, val: string): MyObject =
result = MyObject(kind: kind)

Expand All @@ -75,3 +85,9 @@ proc newMyObjectRef(kind: MyKind, val: string): MyObjectRef =


echo newMyObject(M1, "2").kind, " ", newMyObjectRef(M2, "3").kind


proc test(c: Helper): string =
c.formatted

echo test(Helper(isKind: true, formatted: "ok"))

0 comments on commit 46bfb59

Please sign in to comment.