Fix nanopb_generator exception on enums with aliases (#535)
diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py
index 6f9a267..ae16064 100755
--- a/generator/nanopb_generator.py
+++ b/generator/nanopb_generator.py
@@ -176,6 +176,11 @@
def __eq__(self, other):
return isinstance(other, Names) and self.parts == other.parts
+ def __lt__(self, other):
+ if not isinstance(other, Names):
+ return NotImplemented
+ return str(self) < str(other)
+
def names_from_type_name(type_name):
'''Parse Names() from FieldDescriptorProto type_name'''
if type_name[0] != '.':
diff --git a/tests/regression/issue_535/SConscript b/tests/regression/issue_535/SConscript
new file mode 100644
index 0000000..e354672
--- /dev/null
+++ b/tests/regression/issue_535/SConscript
@@ -0,0 +1,6 @@
+# Regression test for #535:
+# Generator crash on enums with aliases
+
+Import("env")
+env.NanopbProto("issue_535")
+env.Object("issue_535.pb.c")
diff --git a/tests/regression/issue_535/issue_535.proto b/tests/regression/issue_535/issue_535.proto
new file mode 100644
index 0000000..29dee5f
--- /dev/null
+++ b/tests/regression/issue_535/issue_535.proto
@@ -0,0 +1,10 @@
+/* Test generation of enums with aliases */
+
+syntax = "proto3";
+
+enum EnumWithAliases {
+ option allow_alias = true;
+ First = 0;
+ Second = 1;
+ AlsoSecond = 1;
+}