diff options
-rwxr-xr-x | generator/nanopb_generator.py | 2 | ||||
-rw-r--r-- | tests/SConstruct | 2 | ||||
-rw-r--r-- | tests/regression/issue_125/SConscript | 9 | ||||
-rw-r--r-- | tests/regression/issue_125/extensionbug.expected | 3 | ||||
-rw-r--r-- | tests/regression/issue_125/extensionbug.options | 4 | ||||
-rw-r--r-- | tests/regression/issue_125/extensionbug.proto | 16 |
6 files changed, 34 insertions, 2 deletions
diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py index 1f263a74..3bc8b39a 100755 --- a/generator/nanopb_generator.py +++ b/generator/nanopb_generator.py @@ -645,7 +645,7 @@ def parse_file(fdesc, file_options): enums.append(Enum(names, enum, enum_options)) for names, extension in iterate_extensions(fdesc, base_name): - field_options = get_nanopb_suboptions(extension, file_options, names) + field_options = get_nanopb_suboptions(extension, file_options, names + extension.name) if field_options.type != nanopb_pb2.FT_IGNORE: extensions.append(ExtensionField(names, extension, field_options)) diff --git a/tests/SConstruct b/tests/SConstruct index 7a278443..57167ccc 100644 --- a/tests/SConstruct +++ b/tests/SConstruct @@ -141,6 +141,6 @@ import os.path env['VARIANT_DIR'] = 'build' env['BUILD'] = '#' + env['VARIANT_DIR'] env['COMMON'] = '#' + env['VARIANT_DIR'] + '/common' -for subdir in Glob('*/SConscript'): +for subdir in Glob('*/SConscript') + Glob('regression/*/SConscript'): SConscript(subdir, exports = 'env', variant_dir = env['VARIANT_DIR'] + '/' + os.path.dirname(str(subdir))) diff --git a/tests/regression/issue_125/SConscript b/tests/regression/issue_125/SConscript new file mode 100644 index 00000000..f2155e63 --- /dev/null +++ b/tests/regression/issue_125/SConscript @@ -0,0 +1,9 @@ +# Regression test for Issue 125: Wrong identifier name for extension fields + +Import("env") + +env.NanopbProto(["extensionbug", "extensionbug.options"]) +env.Object('extensionbug.pb.c') + +env.Match(['extensionbug.pb.h', 'extensionbug.expected']) + diff --git a/tests/regression/issue_125/extensionbug.expected b/tests/regression/issue_125/extensionbug.expected new file mode 100644 index 00000000..fc213354 --- /dev/null +++ b/tests/regression/issue_125/extensionbug.expected @@ -0,0 +1,3 @@ +pb_extension_type_t Message2_extras +uint32_t field2 + diff --git a/tests/regression/issue_125/extensionbug.options b/tests/regression/issue_125/extensionbug.options new file mode 100644 index 00000000..30b464a4 --- /dev/null +++ b/tests/regression/issue_125/extensionbug.options @@ -0,0 +1,4 @@ +* type:FT_IGNORE + +Message2.extras type:FT_STATIC +Message2.field2 type:FT_STATIC diff --git a/tests/regression/issue_125/extensionbug.proto b/tests/regression/issue_125/extensionbug.proto new file mode 100644 index 00000000..c4ac6860 --- /dev/null +++ b/tests/regression/issue_125/extensionbug.proto @@ -0,0 +1,16 @@ +message Message1 +{ + optional uint32 fieldA = 1; + extensions 30 to max; +} + +message Message2 +{ + extend Message1 + { + optional Message2 extras = 30; + } + + optional uint32 field1 = 1; + optional uint32 field2 = 2; +} |