@@ -724,11 +724,8 @@ def check_name_str(name, info, source,
global valid_name
membername = name
- if name.startswith('*'):
+ if allow_optional and name.startswith('*'):
membername = name[1:]
- if not allow_optional:
- raise QAPISemError(info, "%s does not allow optional name '%s'"
- % (source, name))
# Enum members can start with a digit, because the generated C
# code always prefixes it with the enum name
if enum_member and membername[0].isdigit():
@@ -741,6 +738,7 @@ def check_name_str(name, info, source,
if not permit_upper and name.lower() != name:
raise QAPISemError(
info, "%s uses uppercase in name '%s'" % (source, name))
+ assert not membername.startswith('*')
def add_name(name, info, meta):
@@ -1,2 +1,2 @@
tests/qapi-schema/bad-ident.json: In struct '*oops':
-tests/qapi-schema/bad-ident.json:2: 'struct' does not allow optional name '*oops'
+tests/qapi-schema/bad-ident.json:2: 'struct' uses invalid name '*oops'
@@ -1,2 +1,2 @@
tests/qapi-schema/flat-union-discriminator-bad-name.json: In union 'MyUnion':
-tests/qapi-schema/flat-union-discriminator-bad-name.json:7: discriminator of flat union 'MyUnion' does not allow optional name '*switch'
+tests/qapi-schema/flat-union-discriminator-bad-name.json:7: discriminator of flat union 'MyUnion' uses invalid name '*switch'
@@ -1,5 +1,5 @@
# discriminator '*switch' isn't a member of base, 'switch' is
-# reports "does not allow optional name", which is good enough
+# reports "uses invalid name", which is good enough
{ 'enum': 'Enum', 'data': [ 'one', 'two' ] }
{ 'struct': 'Base',
'data': { '*switch': 'Enum' } }
@@ -1,2 +1,2 @@
tests/qapi-schema/union-optional-branch.json: In union 'Union':
-tests/qapi-schema/union-optional-branch.json:2: member of union 'Union' does not allow optional name '*a'
+tests/qapi-schema/union-optional-branch.json:2: member of union 'Union' uses invalid name '*a'