qapi: Improve reporting of redefinition

Point to the previous definition, unless it's a built-in.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20190927134639.4284-26-armbru@redhat.com>
This commit is contained in:
Markus Armbruster 2019-09-27 15:46:38 +02:00
parent f63326985a
commit 56d2df5e65
4 changed files with 14 additions and 3 deletions

View File

@ -1759,6 +1759,11 @@ class QAPISchema(object):
# because they're liable to clash in generated C.
other_ent = self._entity_dict.get(ent.name)
if other_ent:
if other_ent.info:
where = QAPIError(other_ent.info, None, "previous definition")
raise QAPISemError(
ent.info,
"'%s' is already defined\n%s" % (ent.name, where))
raise QAPISemError(
ent.info, "%s is already defined" % other_ent.describe())
self._entity_dict[ent.name] = ent

View File

@ -1,2 +1,4 @@
tests/qapi-schema/redefined-command.json: In command 'foo':
tests/qapi-schema/redefined-command.json:3: command 'foo' is already defined
tests/qapi-schema/redefined-command.json:3: 'foo' is already defined
tests/qapi-schema/redefined-command.json: In command 'foo':
tests/qapi-schema/redefined-command.json:2: previous definition

View File

@ -1,2 +1,4 @@
tests/qapi-schema/redefined-event.json: In event 'EVENT_A':
tests/qapi-schema/redefined-event.json:3: event 'EVENT_A' is already defined
tests/qapi-schema/redefined-event.json:3: 'EVENT_A' is already defined
tests/qapi-schema/redefined-event.json: In event 'EVENT_A':
tests/qapi-schema/redefined-event.json:2: previous definition

View File

@ -1,2 +1,4 @@
tests/qapi-schema/redefined-type.json: In enum 'foo':
tests/qapi-schema/redefined-type.json:3: struct type 'foo' is already defined
tests/qapi-schema/redefined-type.json:3: 'foo' is already defined
tests/qapi-schema/redefined-type.json: In struct 'foo':
tests/qapi-schema/redefined-type.json:2: previous definition