Running into this, still seems to be a bug.
I have a simple type:
type
Torrent* = object
name*: string
uploaded_at*: DateTime
Run
And when I try to render a seq[Torrent] in my jester API as json:
Users/sergiotapia/Work/torrentinim/src/torrentinim.nim(18, 14)
template/generic instantiation of `%*` from here
/Users/sergiotapia/.choosenim/toolchains/nim-1.0.4/lib/pure/json.nim(331,
36) template/generic instantiation of `%` from here
/Users/sergiotapia/.choosenim/toolchains/nim-1.0.4/lib/pure/json.nim(371,
14) template/generic instantiation of `%` from here
/Users/sergiotapia/.choosenim/toolchains/nim-1.0.4/lib/pure/json.nim(364,
41) Error: type mismatch: got <proc (x: Time): ZonedTime{.closure, gcsafe,
locks: 0.}>
but expected one of:
proc `%`(s: string): JsonNode
first type mismatch at position: 1
required type for s: string
but expression 'o.zonedTimeFromTimeImpl' is of type: proc (x: Time):
ZonedTime{.closure, gcsafe, locks: 0.}
proc `%`(n: uint): JsonNode
first type mismatch at position: 1
required type for n: uint
but expression 'o.zonedTimeFromTimeImpl' is of type: proc (x: Time):
ZonedTime{.closure, gcsafe, locks: 0.}
proc `%`(n: BiggestInt): JsonNode
first type mismatch at position: 1
required type for n: BiggestInt
but expression 'o.zonedTimeFromTimeImpl' is of type: proc (x: Time):
ZonedTime{.closure, gcsafe, locks: 0.}
proc `%`(n: BiggestUInt): JsonNode
first type mismatch at position: 1
required type for n: BiggestUInt
but expression 'o.zonedTimeFromTimeImpl' is of type: proc (x: Time):
ZonedTime{.closure, gcsafe, locks: 0.}
proc `%`(n: int): JsonNode
first type mismatch at position: 1
required type for n: int
but expression 'o.zonedTimeFromTimeImpl' is of type: proc (x: Time):
ZonedTime{.closure, gcsafe, locks: 0.}
proc `%`(n: float): JsonNode
first type mismatch at position: 1
required type for n: float
but expression 'o.zonedTimeFromTimeImpl' is of type: proc (x: Time):
ZonedTime{.closure, gcsafe, locks: 0.}
proc `%`(b: bool): JsonNode
first type mismatch at position: 1
required type for b: bool
but expression 'o.zonedTimeFromTimeImpl' is of type: proc (x: Time):
ZonedTime{.closure, gcsafe, locks: 0.}
proc `%`(keyVals: openArray[tuple[key: string, val: JsonNode]]): JsonNode
first type mismatch at position: 1
required type for keyVals: openArray[tuple[key: string, val: JsonNode]]
but expression 'o.zonedTimeFromTimeImpl' is of type: proc (x: Time):
ZonedTime{.closure, gcsafe, locks: 0.}
template `%`(j: JsonNode): JsonNode
first type mismatch at position: 1
required type for j: JsonNode
but expression 'o.zonedTimeFromTimeImpl' is of type: proc (x: Time):
ZonedTime{.closure, gcsafe, locks: 0.}
proc `%`[T](elements: openArray[T]): JsonNode
first type mismatch at position: 1
required type for elements: openArray[T]
but expression 'o.zonedTimeFromTimeImpl' is of type: proc (x: Time):
ZonedTime{.closure, gcsafe, locks: 0.}
proc `%`[T](table: Table[string, T] | OrderedTable[string, T]): JsonNode
first type mismatch at position: 1
required type for table: Table[system.string, %.T] or
OrderedTable[system.string, %.T]
but expression 'o.zonedTimeFromTimeImpl' is of type: proc (x: Time):
ZonedTime{.closure, gcsafe, locks: 0.}
proc `%`[T](opt: Option[T]): JsonNode
first type mismatch at position: 1
required type for opt: Option[%.T]
but expression 'o.zonedTimeFromTimeImpl' is of type: proc (x: Time):
ZonedTime{.closure, gcsafe, locks: 0.}
proc `%`[T: object](o: T): JsonNode
first type mismatch at position: 1
required type for o: T: object
but expression 'o.zonedTimeFromTimeImpl' is of type: proc (x: Time):
ZonedTime{.closure, gcsafe, locks: 0.}
proc `%`(formatstr, a: string): string
first type mismatch at position: 1
required type for formatstr: string
but expression 'o.zonedTimeFromTimeImpl' is of type: proc (x: Time):
ZonedTime{.closure, gcsafe, locks: 0.}
proc `%`(formatstr: string; a: openArray[string]): string
first type mismatch at position: 1
required type for formatstr: string
but expression 'o.zonedTimeFromTimeImpl' is of type: proc (x: Time):
ZonedTime{.closure, gcsafe, locks: 0.}
proc `%`(f: string; t: StringTableRef; flags: set[FormatFlag] = {}): string
first type mismatch at position: 1
required type for f: string
but expression 'o.zonedTimeFromTimeImpl' is of type: proc (x: Time):
ZonedTime{.closure, gcsafe, locks: 0.}
proc `%`(o: enum): JsonNode
first type mismatch at position: 1
required type for o: enum
but expression 'o.zonedTimeFromTimeImpl' is of type: proc (x: Time):
ZonedTime{.closure, gcsafe, locks: 0.}
proc `%`(o: ref object): JsonNode
first type mismatch at position: 1
required type for o: ref object
but expression 'o.zonedTimeFromTimeImpl' is of type: proc (x: Time):
ZonedTime{.closure, gcsafe, locks: 0.}
expression: %o.zonedTimeFromTimeImpl
Run