def check_name(name, info, source,
allow_optional=False, enum_member=False, permit_upper=False):
- global valid_name
- membername = name
+ check_name_is_str(name, info, source)
+ check_name_str(name, info, source,
+ allow_optional, enum_member, permit_upper)
+
+def check_name_is_str(name, info, source):
if not isinstance(name, str):
raise QAPISemError(info, "%s requires a string name" % source)
+
+
+def check_name_str(name, info, source,
+ allow_optional=False, enum_member=False,
+ permit_upper=False):
+ global valid_name
+ membername = name
+
if name.startswith('*'):
membername = name[1:]
if not allow_optional:
def add_name(name, info, meta):
global all_names
- check_name(name, info, "'%s'" % meta, permit_upper=True)
# FIXME should reject names that differ only in '_' vs. '.'
# vs. '-', because they're liable to clash in generated C.
if name in all_names:
raise QAPISemError(info, "expression is missing metatype")
normalize_if(expr)
name = expr[meta]
- add_name(name, info, meta)
+ check_name_is_str(name, info, "'%s'" % meta)
info.set_defn(meta, name)
+ check_name_str(name, info, "'%s'" % meta, permit_upper=True)
+ add_name(name, info, meta)
if doc and doc.symbol != name:
raise QAPISemError(
info,