Fix generator error when oneof contains a single unresolved field size (#610)
The error message was:
Error "'dict_values' object does not support indexing" while compiling .proto files
Added test case for the same.
diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py
index 5111d92..5759a7f 100755
--- a/generator/nanopb_generator.py
+++ b/generator/nanopb_generator.py
@@ -987,7 +987,7 @@
# have to rely on macro resolution at compile time.
if len(dynamic_sizes) == 1:
# Only one symbol was needed
- return dynamic_sizes.values()[0]
+ return list(dynamic_sizes.values())[0]
else:
# Use sizeof(union{}) construct to find the maximum size of
# submessages.
diff --git a/tests/regression/issue_610/DataPacket.proto b/tests/regression/issue_610/DataPacket.proto
new file mode 100644
index 0000000..73343b3
--- /dev/null
+++ b/tests/regression/issue_610/DataPacket.proto
@@ -0,0 +1,10 @@
+syntax = "proto3";
+
+import "LogMessage.proto";
+
+message DataPacket {
+ oneof packet {
+ LogMessage log_message = 1;
+ }
+}
+
diff --git a/tests/regression/issue_610/LogMessage.proto b/tests/regression/issue_610/LogMessage.proto
new file mode 100644
index 0000000..24b76c8
--- /dev/null
+++ b/tests/regression/issue_610/LogMessage.proto
@@ -0,0 +1,5 @@
+syntax = "proto3";
+
+message LogMessage {
+ string msg = 1;
+}
diff --git a/tests/regression/issue_610/SConscript b/tests/regression/issue_610/SConscript
new file mode 100644
index 0000000..8fe80d2
--- /dev/null
+++ b/tests/regression/issue_610/SConscript
@@ -0,0 +1,10 @@
+# Regression test for #610:
+# Error "'dict_values' object does not support indexing" while compiling .proto files
+
+Import("env")
+
+env.NanopbProto("LogMessage.proto")
+env.NanopbProto(["DataPacket.proto", "LogMessage.proto"])
+env.Object("LogMessage.pb.c")
+env.Object("DataPacket.pb.c")
+