diff options
author | Petteri Aimonen <jpa@git.mail.kapsi.fi> | 2022-11-25 16:15:11 +0300 |
---|---|---|
committer | Petteri Aimonen <jpa@git.mail.kapsi.fi> | 2022-11-25 16:15:11 +0300 |
commit | a0d5beac3101c017199efa8b0805164ce7ce5e09 (patch) | |
tree | 9b86b29fb65c2f30de5b6721bb5cb528d63d3fe4 | |
parent | b945553bb3bf5098c2cb6260f113c53158937442 (diff) |
Fix generator error when using M_STRIP_PACKAGE without package name (#795)
-rwxr-xr-x | generator/nanopb_generator.py | 3 | ||||
-rw-r--r-- | tests/regression/issue_795/SConscript | 16 | ||||
-rw-r--r-- | tests/regression/issue_795/test.proto | 32 | ||||
-rw-r--r-- | tests/regression/issue_795/test2.proto | 9 | ||||
-rw-r--r-- | tests/regression/issue_795/test3.proto | 9 |
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; +} |