mirror of
https://github.com/nim-lang/Nim.git
synced 2026-04-19 22:10:33 +00:00
* fixes #19967
* use case
* add testcase
* fix typos
* explictly specify other branches
Co-authored-by: xflywind <43030857+xflywind@users.noreply.github.com>
(cherry picked from commit e8556b45f5)
This commit is contained in:
@@ -87,7 +87,20 @@ proc specializeResetT(p: BProc, accessor: Rope, typ: PType) =
|
||||
lineCg(p, cpsStmts, "$1 = 0;$n", [accessor])
|
||||
of tyCstring, tyPointer, tyPtr, tyVar, tyLent:
|
||||
lineCg(p, cpsStmts, "$1 = NIM_NIL;$n", [accessor])
|
||||
else:
|
||||
of tySet:
|
||||
case mapSetType(p.config, typ)
|
||||
of ctArray:
|
||||
lineCg(p, cpsStmts, "#nimZeroMem($1, sizeof($2));$n",
|
||||
[accessor, getTypeDesc(p.module, typ)])
|
||||
of ctInt8, ctInt16, ctInt32, ctInt64:
|
||||
lineCg(p, cpsStmts, "$1 = 0;$n", [accessor])
|
||||
else:
|
||||
doAssert false, "unexpected set type kind"
|
||||
of {tyNone, tyEmpty, tyNil, tyUntyped, tyTyped, tyGenericInvocation,
|
||||
tyGenericParam, tyOrdinal, tyRange, tyOpenArray, tyForward, tyVarargs,
|
||||
tyUncheckedArray, tyProxy, tyBuiltInTypeClass, tyUserTypeClass,
|
||||
tyUserTypeClassInst, tyCompositeTypeClass, tyAnd, tyOr, tyNot,
|
||||
tyAnything, tyStatic, tyFromExpr, tyConcept, tyVoid, tyIterable}:
|
||||
discard
|
||||
|
||||
proc specializeReset(p: BProc, a: TLoc) =
|
||||
|
||||
@@ -74,3 +74,30 @@ template main =
|
||||
|
||||
static: main()
|
||||
main()
|
||||
|
||||
# bug #19967
|
||||
block:
|
||||
type
|
||||
X = object
|
||||
a: string
|
||||
b: set[char]
|
||||
|
||||
var y = X(b: {'a'})
|
||||
|
||||
reset(y)
|
||||
|
||||
doAssert y.b == {}
|
||||
|
||||
block:
|
||||
type
|
||||
Color = enum
|
||||
Red, Blue, Yellow
|
||||
X = object
|
||||
a: string
|
||||
b: set[Color]
|
||||
|
||||
var y = X(b: {Red, Blue})
|
||||
|
||||
reset(y)
|
||||
doAssert y.b == {}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user