diff options
author | Chia-I Wu <[email protected]> | 2009-11-23 13:49:08 +0800 |
---|---|---|
committer | Brian Paul <[email protected]> | 2010-01-04 14:15:15 -0700 |
commit | c3bd85791766e4a6f3896ea724e18640e56c6808 (patch) | |
tree | 51b8789b62c145dd49ca5021c9e369b33b5c7254 /src/mesa/es/main | |
parent | 8264a6a8a6486562a86bb0da3f631c298edbd303 (diff) |
mesa/es: Add a sanity check to APIspec.py.
Some attributes are constant in a switch. Raise an exception if they
are not.
Signed-off-by: Chia-I Wu <[email protected]>
Diffstat (limited to 'src/mesa/es/main')
-rw-r--r-- | src/mesa/es/main/APIspec.py | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/mesa/es/main/APIspec.py b/src/mesa/es/main/APIspec.py index f07e4261fa0..7d27e46e28b 100644 --- a/src/mesa/es/main/APIspec.py +++ b/src/mesa/es/main/APIspec.py @@ -323,12 +323,27 @@ class Checker(object): def __init__(self): self.switches = {} + self.switch_constants = {} def add_desc(self, desc): """Add a description.""" - # TODO take index into consideration + # TODO allow index to vary + const_attrs = ["index", "error", "convert", "size_str"] if desc.name not in self.switches: self.switches[desc.name] = [] + self.switch_constants[desc.name] = {} + for attr in const_attrs: + self.switch_constants[desc.name][attr] = None + + # some attributes, like error code, should be the same for all descs + consts = self.switch_constants[desc.name] + for attr in const_attrs: + if getattr(desc, attr) is not None: + if (consts[attr] is not None and + consts[attr] != getattr(desc, attr)): + raise SpecError("mismatch %s for %s" % (attr, desc.name)) + consts[attr] = getattr(desc, attr) + self.switches[desc.name].append(desc) def validate(self, func, param_nodes): @@ -348,6 +363,7 @@ class Checker(object): tmp.add_desc(desc) self.switches = tmp.switches + self.switch_constants = tmp.switch_constants return True def flatten(self, name=None): |