diff options
Diffstat (limited to 'generator/protoc_gen_nim.nim')
| -rw-r--r-- | generator/protoc_gen_nim.nim | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/generator/protoc_gen_nim.nim b/generator/protoc_gen_nim.nim index a05172a..22e3cd7 100644 --- a/generator/protoc_gen_nim.nim +++ b/generator/protoc_gen_nim.nim @@ -674,12 +674,14 @@ iterator genReadMessageProc(msg: Message): string = yield indent(&"of {field.number}:", 8) if isRepeated(field): if isMapEntry(field): + yield indent(&"expectWireType(wireType, {field.wiretypeStr})", 12) yield indent("let", 12) yield indent("size = readVarint(stream)", 16) yield indent("data = readStr(stream, int(size))", 16) yield indent("pbs = newProtobufStream(newStringStream(data))", 16) yield indent(&"read{field.typeName}KV(pbs, result.{field.name})", 12) elif isNumeric(field): + yield indent(&"expectWireType(wireType, {field.wiretypeStr}, WireType.LengthDelimited)", 12) yield indent("if wireType == WireType.LengthDelimited:", 12) yield indent("let", 16) yield indent("size = readVarint(stream)", 20) @@ -693,14 +695,17 @@ iterator genReadMessageProc(msg: Message): string = yield indent("else:", 12) yield indent(&"{setter}(result, {reader}(stream))", 16) elif isMessage(field): + yield indent(&"expectWireType(wireType, {field.wiretypeStr})", 12) yield indent("let", 12) yield indent("size = readVarint(stream)", 16) yield indent("data = readStr(stream, int(size))", 16) yield indent("pbs = newProtobufStream(newStringStream(data))", 16) yield indent(&"{setter}(result, {reader}(pbs))", 12) else: + yield indent(&"expectWireType(wireType, {field.wiretypeStr})", 12) yield indent(&"{setter}(result, {reader}(stream))", 12) else: + yield indent(&"expectWireType(wireType, {field.wiretypeStr})", 12) if isMessage(field): yield indent("let", 12) yield indent("size = readVarint(stream)", 16) |
