Skip to content

Commit

Permalink
qapi: Adjust frontend errors to say enum value, not member
Browse files Browse the repository at this point in the history
For consistency with docs/devel/qapi-code-gen.txt.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20190913201349.24332-12-armbru@redhat.com>
  • Loading branch information
Markus Armbruster committed Sep 24, 2019
1 parent 0ced953 commit 398969f
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 6 deletions.
11 changes: 8 additions & 3 deletions scripts/qapi/common.py
Expand Up @@ -1340,7 +1340,7 @@ class QAPISchemaEnumType(QAPISchemaType):
def __init__(self, name, info, doc, ifcond, members, prefix):
QAPISchemaType.__init__(self, name, info, doc, ifcond)
for m in members:
assert isinstance(m, QAPISchemaMember)
assert isinstance(m, QAPISchemaEnumMember)
m.set_owner(name)
assert prefix is None or isinstance(prefix, str)
self.members = members
Expand Down Expand Up @@ -1551,6 +1551,10 @@ def describe(self):
return "'%s' %s" % (self.name, self._pretty_owner())


class QAPISchemaEnumMember(QAPISchemaMember):
role = 'value'


class QAPISchemaFeature(QAPISchemaMember):
role = 'feature'

Expand Down Expand Up @@ -1807,7 +1811,8 @@ def _make_features(self, features):
return [QAPISchemaFeature(f['name'], f.get('if')) for f in features]

def _make_enum_members(self, values):
return [QAPISchemaMember(v['name'], v.get('if')) for v in values]
return [QAPISchemaEnumMember(v['name'], v.get('if'))
for v in values]

def _make_implicit_enum_type(self, name, info, ifcond, values):
# See also QAPISchemaObjectTypeMember._pretty_owner()
Expand Down Expand Up @@ -2223,7 +2228,7 @@ def gen_enum_lookup(name, members, prefix=None):

def gen_enum(name, members, prefix=None):
# append automatically generated _MAX value
enum_members = members + [QAPISchemaMember('_MAX')]
enum_members = members + [QAPISchemaEnumMember('_MAX')]

ret = mcgen('''
Expand Down
2 changes: 1 addition & 1 deletion scripts/qapi/events.py
Expand Up @@ -194,7 +194,7 @@ def visit_event(self, name, info, ifcond, arg_type, boxed):
self._event_emit_name))
# Note: we generate the enum member regardless of @ifcond, to
# keep the enumeration usable in target-independent code.
self._event_enum_members.append(QAPISchemaMember(name))
self._event_enum_members.append(QAPISchemaEnumMember(name))


def gen_events(schema, output_dir, prefix):
Expand Down
2 changes: 1 addition & 1 deletion tests/qapi-schema/enum-clash-member.err
@@ -1 +1 @@
tests/qapi-schema/enum-clash-member.json:2: 'one_two' (member of MyEnum) collides with 'one-two' (member of MyEnum)
tests/qapi-schema/enum-clash-member.json:2: 'one_two' (value of MyEnum) collides with 'one-two' (value of MyEnum)
2 changes: 1 addition & 1 deletion tests/qapi-schema/enum-member-case.err
@@ -1 +1 @@
tests/qapi-schema/enum-member-case.json:4: 'Value' (member of NoWayThisWillGetWhitelisted) should not use uppercase
tests/qapi-schema/enum-member-case.json:4: 'Value' (value of NoWayThisWillGetWhitelisted) should not use uppercase

0 comments on commit 398969f

Please sign in to comment.