parent
554fe8f88f
commit
52cf728001
2 changed files with 47 additions and 33 deletions
|
|
@ -122,8 +122,10 @@ proc genericAssignAux(dest, src: pointer, mt: PNimType, shallow: bool) =
|
||||||
# var tbObj = TB(p)
|
# var tbObj = TB(p)
|
||||||
# tbObj of TC # needs to be false!
|
# tbObj of TC # needs to be false!
|
||||||
#c_fprintf(stdout, "%s %s\n", pint[].name, mt.name)
|
#c_fprintf(stdout, "%s %s\n", pint[].name, mt.name)
|
||||||
let srcType = cast[ptr PNimType](src)[] # object is not initialized properly(for example std/times.DateTime)
|
let srcType = cast[ptr PNimType](src)[]
|
||||||
if srcType != nil:
|
if srcType != nil:
|
||||||
|
# `!= nil` needed because of cases where object is not initialized properly (see bug #16706)
|
||||||
|
# note that you can have `srcType == nil` yet `src != nil`
|
||||||
chckObjAsgn(srcType, mt)
|
chckObjAsgn(srcType, mt)
|
||||||
pint[] = mt # cast[ptr PNimType](src)[]
|
pint[] = mt # cast[ptr PNimType](src)[]
|
||||||
of tyTuple:
|
of tyTuple:
|
||||||
|
|
|
||||||
|
|
@ -1,37 +1,49 @@
|
||||||
import std/[options, tables, times]
|
# bug #16706
|
||||||
|
|
||||||
type
|
block: # reduced example
|
||||||
Data* = object
|
type
|
||||||
shifts*: OrderedTable[int64, Shift]
|
A = object of RootObj
|
||||||
balance*: float
|
a0: string
|
||||||
|
B = object
|
||||||
|
b0: seq[A]
|
||||||
|
var c = newSeq[A](2)
|
||||||
|
var d = B(b0: c)
|
||||||
|
|
||||||
Shift* = object
|
when true: # original example
|
||||||
quoted*: bool
|
import std/[options, tables, times]
|
||||||
date*: DateTime
|
|
||||||
description*: string
|
|
||||||
start*: Option[DateTime]
|
|
||||||
finish*: Option[DateTime]
|
|
||||||
breakTime*: Option[Duration]
|
|
||||||
rate*: float
|
|
||||||
qty: Option[float]
|
|
||||||
id*: int64
|
|
||||||
|
|
||||||
let shift = Shift(
|
type
|
||||||
quoted: true,
|
Data* = object
|
||||||
date: parse("2000-01-01", "yyyy-MM-dd"),
|
shifts*: OrderedTable[int64, Shift]
|
||||||
description: "abcdef",
|
balance*: float
|
||||||
start: none(DateTime),
|
|
||||||
finish: none(DateTime),
|
|
||||||
breakTime: none(Duration),
|
|
||||||
rate: 462.11,
|
|
||||||
qty: some(10.0),
|
|
||||||
id: getTime().toUnix()
|
|
||||||
)
|
|
||||||
|
|
||||||
var shifts: OrderedTable[int64, Shift]
|
Shift* = object
|
||||||
shifts[shift.id] = shift
|
quoted*: bool
|
||||||
|
date*: DateTime
|
||||||
|
description*: string
|
||||||
|
start*: Option[DateTime]
|
||||||
|
finish*: Option[DateTime]
|
||||||
|
breakTime*: Option[Duration]
|
||||||
|
rate*: float
|
||||||
|
qty: Option[float]
|
||||||
|
id*: int64
|
||||||
|
|
||||||
discard Data(
|
let shift = Shift(
|
||||||
shifts: shifts,
|
quoted: true,
|
||||||
balance: 0.00
|
date: parse("2000-01-01", "yyyy-MM-dd"),
|
||||||
)
|
description: "abcdef",
|
||||||
|
start: none(DateTime),
|
||||||
|
finish: none(DateTime),
|
||||||
|
breakTime: none(Duration),
|
||||||
|
rate: 462.11,
|
||||||
|
qty: some(10.0),
|
||||||
|
id: getTime().toUnix()
|
||||||
|
)
|
||||||
|
|
||||||
|
var shifts: OrderedTable[int64, Shift]
|
||||||
|
shifts[shift.id] = shift
|
||||||
|
|
||||||
|
discard Data(
|
||||||
|
shifts: shifts,
|
||||||
|
balance: 0.00
|
||||||
|
)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue