From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33443) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YoHXa-0006sd-3r for qemu-devel@nongnu.org; Fri, 01 May 2015 16:28:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YoHXV-0003tM-Q5 for qemu-devel@nongnu.org; Fri, 01 May 2015 16:28:06 -0400 Received: from resqmta-po-09v.sys.comcast.net ([96.114.154.168]:51625) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YoHXV-0003rq-GI for qemu-devel@nongnu.org; Fri, 01 May 2015 16:28:01 -0400 From: Eric Blake Date: Fri, 1 May 2015 14:27:55 -0600 Message-Id: <1430512075-20672-1-git-send-email-eblake@redhat.com> In-Reply-To: <1430312814-19706-40-git-send-email-eblake@redhat.com> References: <1430312814-19706-40-git-send-email-eblake@redhat.com> Subject: [Qemu-devel] [PATCH v7 39a/39] squash: qapi: Check for member name conflicts with a base class List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: kwolf@redhat.com, berto@igalia.com, armbru@redhat.com A conflict must be marked even when the two dictionaries being compared differ on whether the key is marked optional. Signed-off-by: Eric Blake --- scripts/qapi.py | 4 +++- tests/qapi-schema/flat-union-branch-clash.json | 2 +- tests/qapi-schema/struct-base-clash-deep.json | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/scripts/qapi.py b/scripts/qapi.py index 4ec8646..ad20d3e 100644 --- a/scripts/qapi.py +++ b/scripts/qapi.py @@ -419,7 +419,9 @@ def check_member_clash(expr_info, base_name, data, source = ""): assert base base_members = base['data'] for key in data.keys(): - if key in base_members: + if key.startswith('*'): + key = key[1:] + if key in base_members or "*%s" %key in base_members: raise QAPIExprError(expr_info, "Member name '%s'%s clashes with base '%s'" %(key, source, base_name)) diff --git a/tests/qapi-schema/flat-union-branch-clash.json b/tests/qapi-schema/flat-union-branch-clash.json index b3c6ffe..8fb054f 100644 --- a/tests/qapi-schema/flat-union-branch-clash.json +++ b/tests/qapi-schema/flat-union-branch-clash.json @@ -2,7 +2,7 @@ { 'enum': 'TestEnum', 'data': [ 'value1', 'value2' ] } { 'struct': 'Base', - 'data': { 'enum1': 'TestEnum', 'name': 'str' } } + 'data': { 'enum1': 'TestEnum', '*name': 'str' } } { 'struct': 'Branch1', 'data': { 'name': 'str' } } { 'struct': 'Branch2', diff --git a/tests/qapi-schema/struct-base-clash-deep.json b/tests/qapi-schema/struct-base-clash-deep.json index 08c8c9c..552fe94 100644 --- a/tests/qapi-schema/struct-base-clash-deep.json +++ b/tests/qapi-schema/struct-base-clash-deep.json @@ -6,4 +6,4 @@ 'data': { 'value': 'int' } } { 'struct': 'Sub', 'base': 'Mid', - 'data': { 'name': 'str' } } + 'data': { '*name': 'str' } } -- 2.1.0