Fix naming of nested Enums with short names
authorPetteri Aimonen <jpa@git.mail.kapsi.fi>
Tue, 13 Nov 2012 22:43:51 +0000 (00:43 +0200)
committerPetteri Aimonen <jpa@git.mail.kapsi.fi>
Tue, 13 Nov 2012 22:43:51 +0000 (00:43 +0200)
generator/nanopb_generator.py
tests/options.expected
tests/options.proto

index 68cc800..6aac1b8 100644 (file)
@@ -92,9 +92,9 @@ class Enum:
         if enum_options.long_names:
             self.values = [(self.names + x.name, x.number) for x in desc.value]            
         else:
-            self.values = [(x.name, x.number) for x in desc.value] 
+            self.values = [(names + x.name, x.number) for x in desc.value] 
         
-        self.value_longnames = [names + desc.name + x.name for x in desc.value]
+        self.value_longnames = [self.names + x.name for x in desc.value]
     
     def __str__(self):
         result = 'typedef enum _%s {\n' % self.names
@@ -395,7 +395,8 @@ def parse_file(fdesc, file_options):
         message_options = get_nanopb_suboptions(message, file_options)
         messages.append(Message(names, message, message_options))
         for enum in message.enum_type:
-            enums.append(Enum(names, enum, message_options))
+            enum_options = get_nanopb_suboptions(enum, message_options)
+            enums.append(Enum(names, enum, enum_options))
     
     # Fix field default values where enum short names are used.
     for enum in enums:
index 61d9805..9350143 100644 (file)
@@ -3,3 +3,4 @@ char msgsize\[30\];
 char fieldsize\[40\];
 pb_callback_t int32_callback;
 \sEnumValue1 = 1
+Message5_EnumValue1
index 7eb2eb3..413d21b 100644 (file)
@@ -43,3 +43,14 @@ message EnumTest
 {
     required Enum1 field = 1 [default = EnumValue2];
 }
+
+// Short enum names inside message
+message Message5
+{
+    enum Enum2
+    {
+       option (nanopb_enumopt).long_names = false;
+       EnumValue1 = 1;
+    }
+    required Enum2 field = 1 [default = EnumValue1];
+}