summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xgenerator/nanopb_generator.py2
-rw-r--r--tests/SConstruct2
-rw-r--r--tests/regression/issue_125/SConscript9
-rw-r--r--tests/regression/issue_125/extensionbug.expected3
-rw-r--r--tests/regression/issue_125/extensionbug.options4
-rw-r--r--tests/regression/issue_125/extensionbug.proto16
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;
+}