summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetteri Aimonen <jpa@git.mail.kapsi.fi>2016-03-04 17:38:47 +0200
committerPetteri Aimonen <jpa@git.mail.kapsi.fi>2016-03-04 17:39:06 +0200
commit11c073bf46204001e52388cdda8a814479e29f43 (patch)
treec3155f56eb09b739c1aee44bb63c2c61664a0163
parent21629738a89e3ba9aea8e503305fe293cf4517f3 (diff)
Provide comments about uncalculable message sizes (issue #195)
-rwxr-xr-xgenerator/nanopb_generator.py4
-rw-r--r--tests/regression/issue_195/SConscript10
-rw-r--r--tests/regression/issue_195/test.expected1
-rw-r--r--tests/regression/issue_195/test.proto8
4 files changed, 22 insertions, 1 deletions
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;
+}