aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--generator/protoc_gen_nim.nim8
1 files changed, 8 insertions, 0 deletions
diff --git a/generator/protoc_gen_nim.nim b/generator/protoc_gen_nim.nim
index 41aaea9..07f5e84 100644
--- a/generator/protoc_gen_nim.nim
+++ b/generator/protoc_gen_nim.nim
@@ -1,5 +1,6 @@
import algorithm
import os
+import pegs
import sequtils
import sets
import strformat
@@ -231,6 +232,13 @@ proc newField(file: ProtoFile, message: Message, desc: FieldDescriptorProto): Fi
result.packed = false
result.mapEntry = nil
+ # Identifiers cannot start/end with underscore
+ removePrefix(result.name, '_')
+ removeSuffix(result.name, '_')
+
+ # Consecutive underscores are not allowed
+ result.name = replace(result.name, peg"'_' '_'+", "_")
+
if isKeyword(result.name):
result.name = "f" & result.name