Fix segfault caused by ensuring valueless statics are not evaluated (#21577)

This commit is contained in:
Jason Beetham
2023-03-28 20:50:56 -06:00
committed by GitHub
parent 2315b01ae6
commit c06623bf8c
2 changed files with 21 additions and 1 deletions

View File

@@ -204,7 +204,7 @@ proc hasValuelessStatics(n: PNode): bool =
proc doThing(_: MyThing)
]#
if n.safeLen == 0:
n.typ.kind == tyStatic
n.typ == nil or n.typ.kind == tyStatic
else:
for x in n:
if hasValuelessStatics(x):

View File

@@ -391,3 +391,23 @@ var sorted = newSeq[int](1000)
for i in 0..<sorted.len: sorted[i] = i*2
doAssert isSorted2(sorted, compare)
doAssert isSorted2(sorted, proc (a, b: int): bool {.inline.} = a < b)
block: # Ensure static descriminated objects compile
type
ObjKind = enum
KindA, KindB, KindC
MyObject[kind: static[ObjKind]] = object of RootObj
myNumber: int
when kind != KindA:
driverType: int
otherField: int
elif kind == KindC:
driverType: uint
otherField: int
var instance: MyObject[KindA]
discard instance
discard MyObject[KindC]()