From 11c073bf46204001e52388cdda8a814479e29f43 Mon Sep 17 00:00:00 2001 From: Petteri Aimonen Date: Fri, 4 Mar 2016 17:38:47 +0200 Subject: [PATCH] Provide comments about uncalculable message sizes (issue #195) --- generator/nanopb_generator.py | 4 +++- tests/regression/issue_195/SConscript | 10 ++++++++++ tests/regression/issue_195/test.expected | 1 + tests/regression/issue_195/test.proto | 8 ++++++++ 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 tests/regression/issue_195/SConscript create mode 100644 tests/regression/issue_195/test.expected create mode 100644 tests/regression/issue_195/test.proto diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py index 357350f0..501affa0 100755 --- a/generator/nanopb_generator.py +++ b/generator/nanopb_generator.py @@ -1119,9 +1119,11 @@ class ProtoFile: yield '/* Maximum encoded size of messages (where known) */\n' for msg in self.messages: msize = msg.encoded_size(self.dependencies) + identifier = '%s_size' % msg.name if msize is not None: - identifier = '%s_size' % msg.name yield '#define %-40s %s\n' % (identifier, msize) + else: + yield '/* %s depends on runtime parameters */\n' % identifier yield '\n' yield '/* Message IDs (where set with "msgid" option) */\n' diff --git a/tests/regression/issue_195/SConscript b/tests/regression/issue_195/SConscript new file mode 100644 index 00000000..78326d32 --- /dev/null +++ b/tests/regression/issue_195/SConscript @@ -0,0 +1,10 @@ +# Regression test for Issue 195: Message size not calculated if a submessage includes +# bytes. Basically a non-working #define being generated. + +Import("env") + +env.NanopbProto(["test"]) +env.Object('test.pb.c') + +env.Match(['test.pb.h', 'test.expected']) + diff --git a/tests/regression/issue_195/test.expected b/tests/regression/issue_195/test.expected new file mode 100644 index 00000000..83ea7ab8 --- /dev/null +++ b/tests/regression/issue_195/test.expected @@ -0,0 +1 @@ +/\* TestMessage_size depends diff --git a/tests/regression/issue_195/test.proto b/tests/regression/issue_195/test.proto new file mode 100644 index 00000000..7a77d69d --- /dev/null +++ b/tests/regression/issue_195/test.proto @@ -0,0 +1,8 @@ +message TestMessage { + required uint32 id = 1; + required bytes payload = 2; +} +message EncapsulatedMessage { + required uint32 id = 1; + required TestMessage test = 2; +} -- 2.16.6