From: Petteri Aimonen Date: Tue, 13 Nov 2012 22:43:51 +0000 (+0200) Subject: Fix naming of nested Enums with short names X-Git-Tag: 3.99.1~14^2~439 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=commitdiff_plain;h=0abb764b1816e6a986c10c30444530e11d112cb1;p=apps%2Flow-level-can-service.git Fix naming of nested Enums with short names --- diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py index 68cc800..6aac1b8 100644 --- a/generator/nanopb_generator.py +++ b/generator/nanopb_generator.py @@ -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: diff --git a/tests/options.expected b/tests/options.expected index 61d9805..9350143 100644 --- a/tests/options.expected +++ b/tests/options.expected @@ -3,3 +3,4 @@ char msgsize\[30\]; char fieldsize\[40\]; pb_callback_t int32_callback; \sEnumValue1 = 1 +Message5_EnumValue1 diff --git a/tests/options.proto b/tests/options.proto index 7eb2eb3..413d21b 100644 --- a/tests/options.proto +++ b/tests/options.proto @@ -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]; +}