glib-mkenums: fix parsing of /*< flags >*/ annotation

Fixes get_type function generation for:

 - GMountMountFlags
 - GDriveStartFlags
 - GResourceLookupFlags
 - GSocketMsgFlags
 - GTlsDatabaseVerifyFlags
 - GTestDBusFlags

which were registered as enum types before, which broke
some unit tests.

Problem is that the flags annotation has no value, so
options.get('flags') would always return None even if
it was present.

https://bugzilla.gnome.org/show_bug.cgi?id=779332
This commit is contained in:
Tim-Philipp Müller 2017-05-13 14:56:29 +01:00 committed by Matthias Clasen
parent 03eac5fac5
commit 1672678bc4

View File

@ -19,7 +19,7 @@ version = '@GLIB_VERSION@'
# glib-mkenums.py
# Information about the current enumeration
flags = None # Is enumeration a bitmask?
flags = False # Is enumeration a bitmask?
option_underscore_name = '' # Overriden underscore variant of the enum name
# for example to fix the cases we don't get the
# mixed-case -> underscorized transform right.
@ -126,7 +126,7 @@ def parse_entries(file, file_name):
value = groups[1]
if len(groups) > 2:
options = groups[2]
if flags is None and value is not None and '<<' in value:
if not flags and value is not None and '<<' in value:
seenbitshift = 1
if options is not None:
@ -339,12 +339,12 @@ def process_file(curfilename):
if 'skip' in options:
continue
enum_prefix = options.get('prefix', None)
flags = options.get('flags', None)
flags = 'flags' in options
option_lowercase_name = options.get('lowercase_name', None)
option_underscore_name = options.get('underscore_name', None)
else:
enum_prefix = None
flags = None
flags = False
option_lowercase_name = None
option_underscore_name = None
@ -369,7 +369,7 @@ def process_file(curfilename):
parse_entries(curfile, curfilename);
# figure out if this was a flags or enums enumeration
if flags is None:
if not flags:
flags = seenbitshift
# Autogenerate a prefix