diff options
author | Markus Armbruster <armbru@redhat.com> | 2019-09-27 15:46:25 +0200 |
---|---|---|
committer | Markus Armbruster <armbru@redhat.com> | 2019-09-28 17:17:19 +0200 |
commit | 67fa64ce0ef92943a25de0f0760f8cfc10c2bbf3 (patch) | |
tree | 2ea0aee90884c849a978fdacdcc3d6b36ee3403c /scripts/qapi | |
parent | 64e04f7149dd7f0f32b8e7aa5a89a0c1e6d0b5d6 (diff) |
qapi: Move check for reserved names out of add_name()
The checks for reserved names are spread far and wide. Move one from
add_name() to new check_defn_name_str(). This is a first step towards
collecting them all in dedicated name checking functions next to
check_name().
While there, drop the quotes around the meta-type in
check_name_str()'s error messages: "'command' uses ... name 'NAME'"
becomes "command uses ... name 'NAME'".
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20190927134639.4284-13-armbru@redhat.com>
Diffstat (limited to 'scripts/qapi')
-rw-r--r-- | scripts/qapi/common.py | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/scripts/qapi/common.py b/scripts/qapi/common.py index a4cf41f13e..111a4bbe55 100644 --- a/scripts/qapi/common.py +++ b/scripts/qapi/common.py @@ -741,6 +741,13 @@ def check_name_str(name, info, source, assert not membername.startswith('*') +def check_defn_name_str(name, info, meta): + check_name_str(name, info, meta, permit_upper=True) + if name.endswith('Kind') or name.endswith('List'): + raise QAPISemError( + info, "%s '%s' should not end in '%s'" % (meta, name, name[-4:])) + + def add_name(name, info, meta): global all_names # FIXME should reject names that differ only in '_' vs. '.' @@ -748,9 +755,6 @@ def add_name(name, info, meta): if name in all_names: raise QAPISemError(info, "%s '%s' is already defined" % (all_names[name], name)) - if name.endswith('Kind') or name.endswith('List'): - raise QAPISemError(info, "%s '%s' should not end in '%s'" - % (meta, name, name[-4:])) all_names[name] = meta @@ -1162,7 +1166,7 @@ def check_exprs(exprs): name = expr[meta] check_name_is_str(name, info, "'%s'" % meta) info.set_defn(meta, name) - check_name_str(name, info, "'%s'" % meta, permit_upper=True) + check_defn_name_str(name, info, meta) add_name(name, info, meta) if doc and doc.symbol != name: raise QAPISemError( @@ -1889,13 +1893,13 @@ class QAPISchema(object): def _make_implicit_enum_type(self, name, info, ifcond, values): # See also QAPISchemaObjectTypeMember.describe() - name = name + 'Kind' # Use namespace reserved by add_name() + name = name + 'Kind' # reserved by check_defn_name_str() self._def_entity(QAPISchemaEnumType( name, info, None, ifcond, self._make_enum_members(values), None)) return name def _make_array_type(self, element_type, info): - name = element_type + 'List' # Use namespace reserved by add_name() + name = element_type + 'List' # reserved by check_defn_name_str() if not self.lookup_type(name): self._def_entity(QAPISchemaArrayType(name, info, element_type)) return name |