mirror of
https://github.com/status-im/nim-json-serialization.git
synced 2025-02-17 20:46:29 +00:00
add {.raises.}
annotation to writeValue
(#64)
Tag `writeValue` overrides with `{.raises: [IOError].}`. The override in `writer.nim` also needs `gcsafe` to support recursion in Nim 2.0.
This commit is contained in:
parent
d93fc19d4a
commit
85b7ea093c
@ -5,7 +5,8 @@ import
|
|||||||
export
|
export
|
||||||
net, common
|
net, common
|
||||||
|
|
||||||
proc writeValue*(writer: var JsonWriter, value: IpAddress) =
|
proc writeValue*(
|
||||||
|
writer: var JsonWriter, value: IpAddress) {.raises: [IOError].} =
|
||||||
writeValue(writer, $value)
|
writeValue(writer, $value)
|
||||||
|
|
||||||
proc readValue*(reader: var JsonReader, value: var IpAddress) =
|
proc readValue*(reader: var JsonReader, value: var IpAddress) =
|
||||||
@ -21,15 +22,16 @@ template writeValue*(writer: var JsonWriter, value: ValidIpAddress) =
|
|||||||
template readValue*(reader: var JsonReader, value: var ValidIpAddress) =
|
template readValue*(reader: var JsonReader, value: var ValidIpAddress) =
|
||||||
readValue reader, IpAddress(value)
|
readValue reader, IpAddress(value)
|
||||||
|
|
||||||
proc writeValue*(writer: var JsonWriter, value: Port) =
|
proc writeValue*(
|
||||||
|
writer: var JsonWriter, value: Port) {.raises: [IOError].} =
|
||||||
writeValue(writer, uint16 value)
|
writeValue(writer, uint16 value)
|
||||||
|
|
||||||
proc readValue*(reader: var JsonReader, value: var Port) =
|
proc readValue*(reader: var JsonReader, value: var Port) =
|
||||||
value = Port reader.readValue(uint16)
|
value = Port reader.readValue(uint16)
|
||||||
|
|
||||||
proc writeValue*(writer: var JsonWriter, value: AddressFamily) =
|
proc writeValue*(
|
||||||
|
writer: var JsonWriter, value: AddressFamily) {.raises: [IOError].} =
|
||||||
writeValue(writer, $value)
|
writeValue(writer, $value)
|
||||||
|
|
||||||
proc readValue*(reader: var JsonReader, value: var AddressFamily) =
|
proc readValue*(reader: var JsonReader, value: var AddressFamily) =
|
||||||
value = parseEnum[AddressFamily](reader.readValue(string))
|
value = parseEnum[AddressFamily](reader.readValue(string))
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ template writeObjectField*(w: var JsonWriter,
|
|||||||
else:
|
else:
|
||||||
false
|
false
|
||||||
|
|
||||||
proc writeValue*(writer: var JsonWriter, value: Option) =
|
proc writeValue*(writer: var JsonWriter, value: Option) {.raises: [IOError].} =
|
||||||
mixin writeValue
|
mixin writeValue
|
||||||
|
|
||||||
if value.isSome:
|
if value.isSome:
|
||||||
|
@ -4,7 +4,7 @@ export sets
|
|||||||
type
|
type
|
||||||
SetType = OrderedSet | HashSet | set
|
SetType = OrderedSet | HashSet | set
|
||||||
|
|
||||||
proc writeValue*(writer: var JsonWriter, value: SetType) =
|
proc writeValue*(writer: var JsonWriter, value: SetType) {.raises: [IOError].} =
|
||||||
writer.writeIterable value
|
writer.writeIterable value
|
||||||
|
|
||||||
proc readValue*(reader: var JsonReader, value: var SetType) =
|
proc readValue*(reader: var JsonReader, value: var SetType) =
|
||||||
@ -12,4 +12,3 @@ proc readValue*(reader: var JsonReader, value: var SetType) =
|
|||||||
value = init SetType
|
value = init SetType
|
||||||
for elem in readArray(reader, ElemType):
|
for elem in readArray(reader, ElemType):
|
||||||
value.incl elem
|
value.incl elem
|
||||||
|
|
||||||
|
@ -4,7 +4,8 @@ export tables
|
|||||||
type
|
type
|
||||||
TableType = OrderedTable | Table
|
TableType = OrderedTable | Table
|
||||||
|
|
||||||
proc writeValue*(writer: var JsonWriter, value: TableType) =
|
proc writeValue*(
|
||||||
|
writer: var JsonWriter, value: TableType) {.raises: [IOError].} =
|
||||||
writer.beginRecord()
|
writer.beginRecord()
|
||||||
for key, val in value:
|
for key, val in value:
|
||||||
writer.writeField $key, val
|
writer.writeField $key, val
|
||||||
|
@ -15,7 +15,8 @@ template writeObjectField*[T](w: var JsonWriter,
|
|||||||
else:
|
else:
|
||||||
false
|
false
|
||||||
|
|
||||||
proc writeValue*[T](writer: var JsonWriter, value: Result[T, void]) =
|
proc writeValue*[T](
|
||||||
|
writer: var JsonWriter, value: Result[T, void]) {.raises: [IOError].} =
|
||||||
mixin writeValue
|
mixin writeValue
|
||||||
|
|
||||||
if value.isOk:
|
if value.isOk:
|
||||||
|
@ -32,7 +32,7 @@ proc init*(W: type JsonWriter, stream: OutputStream,
|
|||||||
|
|
||||||
proc beginRecord*(w: var JsonWriter, T: type)
|
proc beginRecord*(w: var JsonWriter, T: type)
|
||||||
proc beginRecord*(w: var JsonWriter)
|
proc beginRecord*(w: var JsonWriter)
|
||||||
proc writeValue*(w: var JsonWriter, value: auto)
|
proc writeValue*(w: var JsonWriter, value: auto) {.gcsafe, raises: [IOError].}
|
||||||
|
|
||||||
template append(x: untyped) =
|
template append(x: untyped) =
|
||||||
write w.stream, x
|
write w.stream, x
|
||||||
@ -65,7 +65,8 @@ proc writeFieldName*(w: var JsonWriter, name: string) =
|
|||||||
|
|
||||||
w.state = RecordExpected
|
w.state = RecordExpected
|
||||||
|
|
||||||
proc writeField*(w: var JsonWriter, name: string, value: auto) =
|
proc writeField*(
|
||||||
|
w: var JsonWriter, name: string, value: auto) {.raises: [IOError].} =
|
||||||
mixin writeValue
|
mixin writeValue
|
||||||
|
|
||||||
w.writeFieldName(name)
|
w.writeFieldName(name)
|
||||||
@ -161,7 +162,7 @@ template writeObjectField*[FieldType, RecordType](w: var JsonWriter,
|
|||||||
w.writeFieldIMPL(FieldTag[R, fieldName], field, record)
|
w.writeFieldIMPL(FieldTag[R, fieldName], field, record)
|
||||||
true
|
true
|
||||||
|
|
||||||
proc writeValue*(w: var JsonWriter, value: auto) =
|
proc writeValue*(w: var JsonWriter, value: auto) {.gcsafe, raises: [IOError].} =
|
||||||
mixin enumInstanceSerializedFields, writeValue
|
mixin enumInstanceSerializedFields, writeValue
|
||||||
|
|
||||||
when value is JsonNode:
|
when value is JsonNode:
|
||||||
|
@ -5,7 +5,8 @@ import
|
|||||||
|
|
||||||
Json.createFlavor StringyJson
|
Json.createFlavor StringyJson
|
||||||
|
|
||||||
proc writeValue*(w: var JsonWriter[StringyJson], val: SomeInteger) =
|
proc writeValue*(
|
||||||
|
w: var JsonWriter[StringyJson], val: SomeInteger) {.raises: [IOError].} =
|
||||||
writeValue(w, $val)
|
writeValue(w, $val)
|
||||||
|
|
||||||
proc readValue*(r: var JsonReader[StringyJson], v: var SomeSignedInt) =
|
proc readValue*(r: var JsonReader[StringyJson], v: var SomeSignedInt) =
|
||||||
@ -38,4 +39,3 @@ except SerializationError as err:
|
|||||||
quit 1
|
quit 1
|
||||||
|
|
||||||
echo "Decoded: ", decoded
|
echo "Decoded: ", decoded
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user