From: Petteri Aimonen Date: Fri, 3 Apr 2015 17:08:05 +0000 (+0300) Subject: Always define enum long names so that cross-file references work. X-Git-Tag: 5.0.2~186^2~140 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=commitdiff_plain;ds=sidebyside;h=3bcdd49eac3aabcc121173c0023834f8bcf0a3cb;p=apps%2Fagl-service-can-low-level.git Always define enum long names so that cross-file references work. Update issue 118 Status: FixedInGit --- 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]; +}