aboutsummaryrefslogtreecommitdiff
path: root/src/protobuf
diff options
context:
space:
mode:
authorOskari Timperi <oskari.timperi@iki.fi>2018-03-25 18:08:28 +0300
committerOskari Timperi <oskari.timperi@iki.fi>2018-03-25 18:08:28 +0300
commit88b6059fdc2812944e80cb065241462c4c464377 (patch)
treeac3eae7e7f212643fcfe768f85213fd1ea3560d2 /src/protobuf
parentcdb161e4f03d9fbd6174ca2c142e15fde685db0f (diff)
downloadnimpb-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.nim7
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))