1.1 --- a/micropython/data.py Fri May 11 00:20:56 2012 +0200
1.2 +++ b/micropython/data.py Mon May 14 00:19:56 2012 +0200
1.3 @@ -441,9 +441,26 @@
1.4
1.5 if not hasattr(node, "_attrspecifictypes"):
1.6 merged = {}
1.7 - for user in node._attrdefs:
1.8 - merged.update(user._attrnames)
1.9 - node._attrmerged = combine_mapping_dicts(deepen_mapping_dict(node._attrnames), deepen_mapping_dict(merged))
1.10 +
1.11 + # Get the combined usage information from the user definitions.
1.12 +
1.13 + for user in node._attrdefs or [node]:
1.14 +
1.15 + # Filter the usage for each name using the local usage
1.16 + # information.
1.17 +
1.18 + for name, usage in user._attrcombined.items():
1.19 + localusage = node._attrnames.get(name)
1.20 +
1.21 + if usage and localusage:
1.22 + if not merged.has_key(name):
1.23 + merged[name] = ObjectSet()
1.24 +
1.25 + for attrnames, value in usage.items():
1.26 + if attrnames and localusage.issubset(attrnames):
1.27 + merged[name][attrnames] = value
1.28 +
1.29 + node._attrmerged = merged
1.30 node._attrspecifictypes = self._deduce_types(node._attrmerged, objtable)
1.31
1.32 self._finalise_contributors(node, objtable)