Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nanopb/nanopb.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetteri Aimonen <jpa@git.mail.kapsi.fi>2022-11-25 16:15:11 +0300
committerPetteri Aimonen <jpa@git.mail.kapsi.fi>2022-11-25 16:15:11 +0300
commita0d5beac3101c017199efa8b0805164ce7ce5e09 (patch)
tree9b86b29fb65c2f30de5b6721bb5cb528d63d3fe4
parentb945553bb3bf5098c2cb6260f113c53158937442 (diff)
Fix generator error when using M_STRIP_PACKAGE without package name (#795)
-rwxr-xr-xgenerator/nanopb_generator.py3
-rw-r--r--tests/regression/issue_795/SConscript16
-rw-r--r--tests/regression/issue_795/test.proto32
-rw-r--r--tests/regression/issue_795/test2.proto9
-rw-r--r--tests/regression/issue_795/test3.proto9
5 files changed, 69 insertions, 0 deletions
diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py
index 7aa26ca..a56bffd 100755
--- a/generator/nanopb_generator.py
+++ b/generator/nanopb_generator.py
@@ -1741,6 +1741,9 @@ class MangleNames:
self.strip_prefix = "." + fdesc.package
self.replacement_prefix = file_options.package
+ if self.strip_prefix == '.':
+ self.strip_prefix = ''
+
if self.replacement_prefix is not None:
self.base_name = Names(self.replacement_prefix.split('.'))
elif fdesc.package:
diff --git a/tests/regression/issue_795/SConscript b/tests/regression/issue_795/SConscript
new file mode 100644
index 0000000..1ef86a8
--- /dev/null
+++ b/tests/regression/issue_795/SConscript
@@ -0,0 +1,16 @@
+# Regression test for issue #795:
+# "Lookup of non-absolute type names is not supported" when using
+# mangle_names:M_STRIP_PACKAGE
+
+Import('env')
+
+opts = env.Clone()
+
+opts.Append(NANOPBFLAGS = "-s mangle_names:M_STRIP_PACKAGE")
+
+opts.NanopbProto("test.proto")
+opts.NanopbProto("test2.proto")
+opts.NanopbProto("test3.proto")
+opts.Object("test.pb.c")
+opts.Object("test2.pb.c")
+opts.Object("test3.pb.c")
diff --git a/tests/regression/issue_795/test.proto b/tests/regression/issue_795/test.proto
new file mode 100644
index 0000000..53f2edb
--- /dev/null
+++ b/tests/regression/issue_795/test.proto
@@ -0,0 +1,32 @@
+syntax = "proto3";
+
+import "nanopb.proto";
+
+package test.package;
+
+message GenericResponse
+{
+ bool success = 1;
+ string detail = 2 [(nanopb).max_length = 127];
+ int32 int_code = 3;
+}
+
+message TrippleInt {
+ int32 v1 = 1;
+ int32 v2 = 2;
+ int32 v3 = 3;
+}
+
+message TrippleDouble {
+ double v1 = 1;
+ double v2 = 2;
+ double v3 = 3;
+}
+
+enum CircuitID {
+ CIRCUIT_ID_DRIVE_MOTORS = 0;
+ CIRCUIT_ID_GENERATOR = 1;
+ CIRCUIT_ID_PAYLOAD = 2;
+ CIRCUIT_ID_MID = 3;
+ CIRCUIT_ID_SPARE = 4;
+}
diff --git a/tests/regression/issue_795/test2.proto b/tests/regression/issue_795/test2.proto
new file mode 100644
index 0000000..a0dca40
--- /dev/null
+++ b/tests/regression/issue_795/test2.proto
@@ -0,0 +1,9 @@
+syntax = "proto3";
+
+enum TestEnum {
+ TEST_0 = 0;
+}
+
+message TestMsg {
+ TestEnum a = 1;
+}
diff --git a/tests/regression/issue_795/test3.proto b/tests/regression/issue_795/test3.proto
new file mode 100644
index 0000000..7d53065
--- /dev/null
+++ b/tests/regression/issue_795/test3.proto
@@ -0,0 +1,9 @@
+syntax = "proto3";
+
+import "test2.proto";
+
+package test3.package;
+
+message TestMessage {
+ TestEnum a = 1;
+}