summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2010-07-05 16:09:50 +0100
committerSimon MacMullen <simon@rabbitmq.com>2010-07-05 16:09:50 +0100
commit8db0337206f0a12e44f29e30dad2effb4c0f2849 (patch)
treec2b3efdbc3655ef86378e3637cb433f81680650a
parent015d88d4db8cf09fd33c32a6a217e7ea36cab9d8 (diff)
parent3ae7e6206f31167f8cd4cce35480cbe22e2c1e47 (diff)
downloadrabbitmq-codegen-8db0337206f0a12e44f29e30dad2effb4c0f2849.tar.gz
Merge bug 22901 into bug 22889.
-rw-r--r--amqp_codegen.py22
1 files changed, 14 insertions, 8 deletions
diff --git a/amqp_codegen.py b/amqp_codegen.py
index 2ee9da5..6192f8c 100644
--- a/amqp_codegen.py
+++ b/amqp_codegen.py
@@ -76,34 +76,41 @@ def extension_info_merger(key, old, new, allow_overwrite):
def domains_merger(key, old, new, allow_overwrite):
o = dict((k, v) for [k, v] in old)
+ n = dict((k, v) for [k, v] in new)
for [k, v] in new:
if o.has_key(k):
if not allow_overwrite:
- raise AmqpSpecFileMergeConflict(key, old, new)
+ raise AmqpSpecFileMergeConflict(k, old, new)
+ if o[k] != n[k]:
+ raise AmqpSpecFileMergeConflict(k, o[k], n[k])
else:
o[k] = v
return [[k, v] for (k, v) in o.iteritems()]
-def merge_dict_lists_by(dict_key, old, new, allow_overwrite):
- old_index = set(v[dict_key] for v in old)
+def merge_dict_lists_by(dict_key, old, new, allow_overwrite, check_fields):
+ old_index = dict((v[dict_key], v) for v in old)
result = list(old) # shallow copy
for v in new:
- if v[dict_key] in old_index:
+ key = v[dict_key]
+ if key in old_index.iterkeys():
if not allow_overwrite:
raise AmqpSpecFileMergeConflict(description, old, new)
+ for f in check_fields:
+ if old_index[key][f] != v[f]:
+ raise AmqpSpecFileMergeConflict(v[dict_key], old_index[key][f], v[f])
else:
result.append(v)
return result
def constants_merger(key, old, new, allow_overwrite):
- return merge_dict_lists_by("name", old, new, allow_overwrite)
+ return merge_dict_lists_by("name", old, new, allow_overwrite, ["value"])
def methods_merger(classname, old, new, allow_overwrite):
- return merge_dict_lists_by("name", old, new, allow_overwrite)
+ return merge_dict_lists_by("name", old, new, allow_overwrite, [])
def properties_merger(classname, old, new, allow_overwrite):
- return merge_dict_lists_by("name", old, new, allow_overwrite)
+ return merge_dict_lists_by("name", old, new, allow_overwrite, ["type"])
def class_merger(old, new, allow_overwrite):
old["methods"] = methods_merger(old["name"],
@@ -284,7 +291,6 @@ def do_main_dict(funcDict):
parser = OptionParser()
parser.add_option("--allow-overwrite", action="store_true", dest="allow_overwrite", default=False)
(options, args) = parser.parse_args()
- print args, len(args)
if len(args) < 3:
usage()