···860860 # Strip #define macros inside enums861861 proto = KernRe(r'#\s*((define|ifdef|if)\s+|endif)[^;]*;', flags=re.S).sub('', proto)862862863863- members = None864864- declaration_name = None865865-863863+ #864864+ # Parse out the name and members of the enum. Typedef form first.865865+ #866866 r = KernRe(r'typedef\s+enum\s*\{(.*)\}\s*(\w*)\s*;')867867 if r.search(proto):868868 declaration_name = r.group(2)869869 members = r.group(1).rstrip()870870+ #871871+ # Failing that, look for a straight enum872872+ #870873 else:871874 r = KernRe(r'enum\s+(\w*)\s*\{(.*)\}')872875 if r.match(proto):873876 declaration_name = r.group(1)874877 members = r.group(2).rstrip()875875-876876- if not members:877877- self.emit_msg(ln, f"{proto}: error: Cannot parse enum!")878878- return879879-878878+ #879879+ # OK, this isn't going to work.880880+ #881881+ else:882882+ self.emit_msg(ln, f"{proto}: error: Cannot parse enum!")883883+ return884884+ #885885+ # Make sure we found what we were expecting.886886+ #880887 if self.entry.identifier != declaration_name:881888 if self.entry.identifier == "":882889 self.emit_msg(ln,883890 f"{proto}: wrong kernel-doc identifier on prototype")884891 else:885892 self.emit_msg(ln,886886- f"expecting prototype for enum {self.entry.identifier}. Prototype was for enum {declaration_name} instead")893893+ f"expecting prototype for enum {self.entry.identifier}. "894894+ f"Prototype was for enum {declaration_name} instead")887895 return888896889897 if not declaration_name:890898 declaration_name = "(anonymous)"891891-899899+ #900900+ # Parse out the name of each enum member, and verify that we901901+ # have a description for it.902902+ #892903 member_set = set()893893-894894- members = KernRe(r'\([^;]*?[\)]').sub('', members)895895-904904+ members = KernRe(r'\([^;)]*\)').sub('', members)896905 for arg in members.split(','):897906 if not arg:898907 continue···912903 self.emit_msg(ln,913904 f"Enum value '{arg}' not described in enum '{declaration_name}'")914905 member_set.add(arg)915915-906906+ #907907+ # Ensure that every described member actually exists in the enum.908908+ #916909 for k in self.entry.parameterdescs:917910 if k not in member_set:918911 self.emit_msg(ln,