mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 09:28:07 +02:00
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 <olvaffe@gmail.com>
This commit is contained in:
parent
8264a6a8a6
commit
c3bd857917
1 changed files with 17 additions and 1 deletions
|
|
@ -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):
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue