qapi: Document flaws in checking of names
We don't actually enforce our "other than downstream extensions [...], all names should begin with a letter" rule. Add a FIXME. We should reject names that differ only in '_' vs. '.' vs. '-', because they're liable to clash in generated C. Add a FIXME. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
ca56a822dd
commit
d90675fa4b
@ -341,6 +341,8 @@ def discriminator_find_enum_define(expr):
|
|||||||
|
|
||||||
return find_enum(discriminator_type)
|
return find_enum(discriminator_type)
|
||||||
|
|
||||||
|
# FIXME should enforce "other than downstream extensions [...], all
|
||||||
|
# names should begin with a letter".
|
||||||
valid_name = re.compile('^[a-zA-Z_][a-zA-Z0-9_.-]*$')
|
valid_name = re.compile('^[a-zA-Z_][a-zA-Z0-9_.-]*$')
|
||||||
def check_name(expr_info, source, name, allow_optional = False,
|
def check_name(expr_info, source, name, allow_optional = False,
|
||||||
enum_member = False):
|
enum_member = False):
|
||||||
@ -367,6 +369,8 @@ def check_name(expr_info, source, name, allow_optional = False,
|
|||||||
def add_name(name, info, meta, implicit = False):
|
def add_name(name, info, meta, implicit = False):
|
||||||
global all_names
|
global all_names
|
||||||
check_name(info, "'%s'" % meta, name)
|
check_name(info, "'%s'" % meta, name)
|
||||||
|
# FIXME should reject names that differ only in '_' vs. '.'
|
||||||
|
# vs. '-', because they're liable to clash in generated C.
|
||||||
if name in all_names:
|
if name in all_names:
|
||||||
raise QAPIExprError(info,
|
raise QAPIExprError(info,
|
||||||
"%s '%s' is already defined"
|
"%s '%s' is already defined"
|
||||||
|
Loading…
Reference in New Issue
Block a user