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

Reply via email to