diff options
-rwxr-xr-x | generator/nanopb_generator.py | 7 | ||||
-rw-r--r-- | tests/regression/issue_118/SConscript | 11 | ||||
-rw-r--r-- | tests/regression/issue_118/enumdef.proto | 6 | ||||
-rw-r--r-- | tests/regression/issue_118/enumuse.proto | 5 |
4 files changed, 29 insertions, 0 deletions
diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py index fc32e2c5..eebe5404 100755 --- a/generator/nanopb_generator.py +++ b/generator/nanopb_generator.py @@ -164,6 +164,13 @@ class Enum: result = 'typedef enum _%s {\n' % self.names result += ',\n'.join([" %s = %d" % x for x in self.values]) result += '\n} %s;' % self.names + + if not self.options.long_names: + # Define the long names always so that enum value references + # from other files work properly. + for i, x in enumerate(self.values): + result += '\n#define %s %s' % (self.value_longnames[i], x[0]) + return result class Field: diff --git a/tests/regression/issue_118/SConscript b/tests/regression/issue_118/SConscript new file mode 100644 index 00000000..c90e8497 --- /dev/null +++ b/tests/regression/issue_118/SConscript @@ -0,0 +1,11 @@ +# Regression test for Issue 118: Short enum names in imported proto files are not honoured + +Import("env") +env.Append(PROTOCPATH = "#regression/issue_118") + +env.NanopbProto("enumdef") +env.Object('enumdef.pb.c') + +env.NanopbProto(["enumuse", "enumdef.proto"]) +env.Object('enumuse.pb.c') + diff --git a/tests/regression/issue_118/enumdef.proto b/tests/regression/issue_118/enumdef.proto new file mode 100644 index 00000000..830d2988 --- /dev/null +++ b/tests/regression/issue_118/enumdef.proto @@ -0,0 +1,6 @@ +import 'nanopb.proto'; + +enum MyEnum { + option (nanopb_enumopt).long_names = false; + FOOBAR = 1; +} diff --git a/tests/regression/issue_118/enumuse.proto b/tests/regression/issue_118/enumuse.proto new file mode 100644 index 00000000..d778fb8f --- /dev/null +++ b/tests/regression/issue_118/enumuse.proto @@ -0,0 +1,5 @@ +import 'enumdef.proto'; + +message MyMessage { + required MyEnum myenum = 1 [default = FOOBAR]; +} |