diff options
| author | Oskari Timperi <oskari.timperi@iki.fi> | 2018-03-25 18:08:28 +0300 |
|---|---|---|
| committer | Oskari Timperi <oskari.timperi@iki.fi> | 2018-03-25 18:08:28 +0300 |
| commit | 88b6059fdc2812944e80cb065241462c4c464377 (patch) | |
| tree | ac3eae7e7f212643fcfe768f85213fd1ea3560d2 /src/protobuf | |
| parent | cdb161e4f03d9fbd6174ca2c142e15fde685db0f (diff) | |
| download | nimpb-88b6059fdc2812944e80cb065241462c4c464377.tar.gz nimpb-88b6059fdc2812944e80cb065241462c4c464377.zip | |
Fix enum initialization to use the first defined value
Diffstat (limited to 'src/protobuf')
| -rw-r--r-- | src/protobuf/gen.nim | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/protobuf/gen.nim b/src/protobuf/gen.nim index 4c943cb..4552da8 100644 --- a/src/protobuf/gen.nim +++ b/src/protobuf/gen.nim @@ -123,7 +123,12 @@ proc defaultValue(field: NimNode): NimNode = of FieldType.Message: result = newCall(ident("new" & getFieldTypeAsString(field))) of FieldType.Bytes: result = newCall(ident("bytes"), newLit("")) of FieldType.UInt32: result = newLit(0'u32) - of FieldType.Enum: result = newCall(ident(getFieldTypeAsString(field)), newLit(0)) + of FieldType.Enum: + let + descId = ident(getFieldTypeAsString(field) & "Desc") + nameId = ident(getFieldTypeAsString(field)) + result = quote do: + `nameId`(`descId`.values[0].number) of FieldType.SFixed32: result = newCall(ident("sfixed32"), newLit(0)) of FieldType.SFixed64: result = newCall(ident("sfixed64"), newLit(0)) of FieldType.SInt32: result = newCall(ident("sint32"), newLit(0)) |
