fixes #20695; fixes object with distinct defaults and tables (#21428)

This commit is contained in:
ringabout
2023-02-24 16:02:44 +08:00
committed by GitHub
parent 8a19ac2070
commit bbb6d2c69d
2 changed files with 41 additions and 2 deletions

View File

@@ -3,7 +3,7 @@ discard """
targets: "c cpp js"
"""
import std/[times, macros]
import std/[times, macros, tables]
type
Guess = object
@@ -236,6 +236,7 @@ template main {.dirty.} =
doAssert x.obj.name.scale == 1
when nimvm:
# todo
discard "fixme"
else:
when defined(gcArc) or defined(gcOrc):
@@ -523,5 +524,41 @@ template main {.dirty.} =
discard oToEither(O())
block: # bug #20695
type
Default = object
tabs: Table[string, int] = initTable[string, int]()
let d = default(Default)
doAssert d.tabs.len == 0
block:
type
Default = object
tabs: Table[string, int] = Table[string, int]()
let d = default(Default)
doAssert d.tabs.len == 0
block:
type DjangoDateTime = distinct DateTime
type Default = object
data: DjangoDateTime = DjangoDateTime(DateTime())
let x = default(Default)
doAssert x.data is DjangoDateTime
block:
type DjangoDateTime = distinct DateTime
type Default = object
data = DjangoDateTime(DateTime())
let x = default(Default)
doAssert x.data is DjangoDateTime
static: main()
main()