Mark a preserves template as used
This commit is contained in:
parent
30a9d55aac
commit
54c28c90ce
|
@ -695,8 +695,7 @@ proc toPreserve*[T](x: T; E = void): Preserve[E] =
|
||||||
elif T is SomeInteger:
|
elif T is SomeInteger:
|
||||||
result = Preserve[E](kind: pkSignedInteger, int: x.BiggestInt)
|
result = Preserve[E](kind: pkSignedInteger, int: x.BiggestInt)
|
||||||
elif T is object:
|
elif T is object:
|
||||||
trace T, " is object"
|
template fieldToPreserve(key: string; val: typed): Preserve {.used.} =
|
||||||
template fieldToPreserve(key: string; val: typed): Preserve =
|
|
||||||
when x.dot(key).hasCustomPragma(preservesSymbol):
|
when x.dot(key).hasCustomPragma(preservesSymbol):
|
||||||
toSymbol(val, E)
|
toSymbol(val, E)
|
||||||
elif x.dot(key).hasCustomPragma(preservesLiteral):
|
elif x.dot(key).hasCustomPragma(preservesLiteral):
|
||||||
|
@ -708,7 +707,6 @@ proc toPreserve*[T](x: T; E = void): Preserve[E] =
|
||||||
elif T.hasCustomPragma(preservesOr):
|
elif T.hasCustomPragma(preservesOr):
|
||||||
var hasKind, hasVariant: bool
|
var hasKind, hasVariant: bool
|
||||||
for k, v in x.fieldPairs:
|
for k, v in x.fieldPairs:
|
||||||
trace T, ": iterate to ", k
|
|
||||||
if k == "orKind":
|
if k == "orKind":
|
||||||
assert(not hasKind)
|
assert(not hasKind)
|
||||||
hasKind = true
|
hasKind = true
|
||||||
|
@ -716,8 +714,6 @@ proc toPreserve*[T](x: T; E = void): Preserve[E] =
|
||||||
assert(hasKind and not hasVariant)
|
assert(hasKind and not hasVariant)
|
||||||
result = fieldToPreserve(k, v)
|
result = fieldToPreserve(k, v)
|
||||||
hasVariant = true
|
hasVariant = true
|
||||||
if not hasVariant:
|
|
||||||
trace T, ": no value found"
|
|
||||||
elif T.hasCustomPragma(preservesRecord):
|
elif T.hasCustomPragma(preservesRecord):
|
||||||
result = Preserve[E](kind: pkRecord)
|
result = Preserve[E](kind: pkRecord)
|
||||||
for k, v in x.fieldPairs:
|
for k, v in x.fieldPairs:
|
||||||
|
@ -733,7 +729,6 @@ proc toPreserve*[T](x: T; E = void): Preserve[E] =
|
||||||
else:
|
else:
|
||||||
result.sequence.add(fieldToPreserve(label, field))
|
result.sequence.add(fieldToPreserve(label, field))
|
||||||
elif T.hasCustomPragma(preservesDictionary):
|
elif T.hasCustomPragma(preservesDictionary):
|
||||||
trace T, ": convert to a dictionary"
|
|
||||||
result = initDictionary[E]()
|
result = initDictionary[E]()
|
||||||
for key, val in x.fieldPairs:
|
for key, val in x.fieldPairs:
|
||||||
result[toSymbol(key, E)] = fieldToPreserve(key, val)
|
result[toSymbol(key, E)] = fieldToPreserve(key, val)
|
||||||
|
@ -919,7 +914,6 @@ proc fromPreserve*[T, E](v: var T; pr: Preserve[E]): bool =
|
||||||
inc i
|
inc i
|
||||||
result = result and (i == pr.len)
|
result = result and (i == pr.len)
|
||||||
elif T.hasCustomPragma(preservesDictionary):
|
elif T.hasCustomPragma(preservesDictionary):
|
||||||
trace T, " is a preservesDictionary"
|
|
||||||
if pr.isDictionary:
|
if pr.isDictionary:
|
||||||
result = true
|
result = true
|
||||||
var i: int
|
var i: int
|
||||||
|
|
Loading…
Reference in New Issue