qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v7 39a/39] squash: qapi: Check for member name confl


From: Eric Blake
Subject: [Qemu-devel] [PATCH v7 39a/39] squash: qapi: Check for member name conflicts with a base class
Date: Fri, 1 May 2015 14:27:55 -0600

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 <address@hidden>
---
 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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]