qapi: Add feature flags to enum members

This is quite similar to commit 84ab008687 "qapi: Add feature flags to
struct members", only for enums instead of structs.

Special feature flag 'deprecated' is silently ignored there.  This is
okay only because it will be implemented shortly.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20211025042405.3762351-3-armbru@redhat.com>
Reviewed-by: John Snow <jsnow@redhat.com>
This commit is contained in:
Markus Armbruster 2021-10-25 06:24:02 +02:00
parent 75ecee7262
commit b6c18755e4
13 changed files with 57 additions and 14 deletions

View file

@ -58,11 +58,14 @@
#
# Features:
# @enum-feat: Also _one_ {and only}
# @enum-member-feat: a member feature
#
# @two is undocumented
##
{ 'enum': 'Enum',
'data': [ { 'name': 'one', 'if': 'IFONE' }, 'two' ],
'data': [ { 'name': 'one', 'if': 'IFONE',
'features': [ 'enum-member-feat' ] },
'two' ],
'features': [ 'enum-feat' ],
'if': 'IFCOND' }

View file

@ -13,6 +13,7 @@ module doc-good.json
enum Enum
member one
if IFONE
feature enum-member-feat
member two
if IFCOND
feature enum-feat
@ -108,6 +109,8 @@ The _one_ {and only}
feature=enum-feat
Also _one_ {and only}
feature=enum-member-feat
a member feature
section=None
@two is undocumented
doc symbol=Base

View file

@ -56,6 +56,9 @@ Features
"enum-feat"
Also _one_ {and only}
"enum-member-feat"
a member feature
"two" is undocumented

View file

@ -1,3 +1,3 @@
enum-dict-member-unknown.json: In enum 'MyEnum':
enum-dict-member-unknown.json:2: 'data' member has unknown key 'bad-key'
Valid keys are 'if', 'name'.
Valid keys are 'features', 'if', 'name'.

View file

@ -301,7 +301,8 @@
'TEST_IF_COND_2'] } } ] }
{ 'enum': 'FeatureEnum1',
'data': [ 'eins', 'zwei', 'drei' ],
'data': [ 'eins', 'zwei',
{ 'name': 'drei', 'features': [ 'deprecated' ] } ],
'features': [ 'feature1' ] }
{ 'union': 'FeatureUnion1',

View file

@ -341,6 +341,7 @@ enum FeatureEnum1
member eins
member zwei
member drei
feature deprecated
feature feature1
object q_obj_FeatureUnion1-base
member tag: FeatureEnum1 optional=False

View file

@ -37,6 +37,7 @@ class QAPISchemaTestVisitor(QAPISchemaVisitor):
for m in members:
print(' member %s' % m.name)
self._print_if(m.ifcond, indent=8)
self._print_features(m.features, indent=8)
self._print_if(ifcond)
self._print_features(features)