Quoting Ian Romanick (2016-04-19 15:07:09) > On 03/31/2016 05:04 PM, Dylan Baker wrote: > > RuntimeError is a very specific type of error. In almost very case it's > > being raised where an assert is the right choice, and in the rest using > > a plain Exception is better, at least there it's obvious it's not that > > the python runtime hit an internal error and died. > > > > Signed-off-by: Dylan Baker <[email protected]> > > --- > > src/mapi/glapi/gen/glX_XML.py | 18 ++++++++++------ > > src/mapi/glapi/gen/glX_proto_size.py | 7 +++--- > > src/mapi/glapi/gen/gl_XML.py | 41 > > +++++++++++++++++++++--------------- > > src/mapi/glapi/gen/typeexpr.py | 36 ++++++++++++++----------------- > > 4 files changed, 55 insertions(+), 47 deletions(-) > > > > diff --git a/src/mapi/glapi/gen/glX_XML.py b/src/mapi/glapi/gen/glX_XML.py > > index 9586323..5604732 100644 > > --- a/src/mapi/glapi/gen/glX_XML.py > > +++ b/src/mapi/glapi/gen/glX_XML.py > > @@ -159,7 +159,9 @@ class glx_function(gl_XML.gl_function): > > self.server_handcode = 1 > > self.client_handcode = 0 > > else: > > - raise RuntimeError('Invalid handcode mode "%s" in > > function "%s".' % (handcode, self.name)) > > + raise Exception( > > + 'Invalid handcode mode "{}" in function > > "{}".'.format( > > + handcode, self.name)) > > > > self.ignore = gl_XML.is_attr_true(child, 'ignore') > > self.can_be_large = gl_XML.is_attr_true(child, 'large') > > @@ -171,8 +173,9 @@ class glx_function(gl_XML.gl_function): > > # new tests are discovered, they should be added here. > > > > for param in self.parameters: > > - if param.is_output and self.glx_rop != 0: > > - raise RuntimeError("Render / RenderLarge commands cannot > > have outputs (%s)." % (self.name)) > > + assert not (param.is_output and self.glx_rop != 0), \ > > The not makes this harder to understand. Use De Morgan's Law: > > not param.is_output or self.glx_rop == 0
Okay, I'll change that and other instance in v2.
>
> > + "Render / RenderLarge commands cannot have outputs
> > ({}).".format(
> > + self.name)
> >
> > def has_variable_size_request(self):
> > """Determine if the GLX request packet is variable sized.
> > @@ -236,7 +239,10 @@ class glx_function(gl_XML.gl_function):
> > elif dim <= 4:
> > offset = 36
> > else:
> > - raise RuntimeError('Invalid number of dimensions %u
> > for parameter "%s" in function "%s".' % (dim, self.image.name, self.name))
> > + raise Exception(
> > + 'Invalid number of dimensions {} for parameter '
> > + '"{}" in function "{}".'.format(
> > + dim, self.image.name, self.name))
> > else:
> > offset = 0
> >
> > @@ -412,13 +418,13 @@ class glx_function(gl_XML.gl_function):
> > elif self.glx_vendorpriv != 0:
> > return "X_GLvop_%s" % (self.name)
> > else:
> > - raise RuntimeError('Function "%s" has no opcode.' %
> > (self.name))
> > + raise Exception('Function "%s" has no opcode.' % (self.name))
> >
> > def opcode_vendor_name(self, name):
> > if name in self.glx_vendorpriv_names:
> > return "X_GLvop_%s" % (name)
> > else:
> > - raise RuntimeError('Function "%s" has no VendorPrivate
> > opcode.' % (name))
> > + raise Exception('Function "%s" has no VendorPrivate opcode.' %
> > (name))
> >
> > def opcode_real_name(self):
> > """Get the true protocol enum name for the GLX opcode
> > diff --git a/src/mapi/glapi/gen/glX_proto_size.py
> > b/src/mapi/glapi/gen/glX_proto_size.py
> > index e1e1a74..b8625a6 100644
> > --- a/src/mapi/glapi/gen/glX_proto_size.py
> > +++ b/src/mapi/glapi/gen/glX_proto_size.py
> > @@ -74,8 +74,8 @@ class glx_enum_function(object):
> > if match_name in e.functions:
> > [count, mode] = e.functions[match_name]
> >
> > - if mode_set and mode != self.mode:
> > - raise RuntimeError("Not all enums for %s have the same
> > mode." % (func_name))
> > + assert not (mode_set and mode != self.mode), \
> > + "Not all enums for %s have the same mode." %
> > (func_name)
>
> Same here.
>
> >
> > self.mode = mode
> >
> > @@ -93,8 +93,7 @@ class glx_enum_function(object):
> > if self.sig is None:
> > self.sig = ""
> > for i in self.count:
> > - if i is None:
> > - raise RuntimeError("i is None. WTF?")
> > + assert i is not None, 'Impossible count of None'
> >
> > self.count[i].sort()
> > for e in self.count[i]:
> > diff --git a/src/mapi/glapi/gen/gl_XML.py b/src/mapi/glapi/gen/gl_XML.py
> > index 7e08c3b..d273ff0 100644
> > --- a/src/mapi/glapi/gen/gl_XML.py
> > +++ b/src/mapi/glapi/gen/gl_XML.py
> > @@ -274,7 +274,7 @@ def classify_category(name, number):
> >
> > try:
> > core_version = float(name)
> > - except Exception, e:
> > + except (ValueError, TypeError):
> > core_version = 0.0
> >
> > if core_version > 0.0:
> > @@ -352,8 +352,11 @@ class gl_enum(gl_item):
> > else:
> > try:
> > c = int(temp)
> > - except Exception, e:
> > - raise RuntimeError('Invalid count value "%s" for enum "%s"
> > in function "%s" when an integer was expected.' % (temp, self.name, n))
> > + except (TypeError, ValueError):
> > + raise Exception(
> > + 'invalid count value "{}" for enum "{}" in function '
> > + '"{}" when an integer was expected.'.format(
> > + c, temp, self.name))
> >
> > self.default_count = c
> >
> > @@ -410,7 +413,7 @@ class gl_parameter(object):
> > count = int(c)
> > self.count = count
> > self.counter = None
> > - except Exception, e:
> > + except (ValueError, TypeError):
> > count = 1
> > self.count = 0
> > self.counter = c
> > @@ -652,8 +655,9 @@ class gl_function(gl_item):
> >
> > if not self.name:
> > self.name = true_name
> > - elif self.name != true_name:
> > - raise RuntimeError("Function true name redefined. Was %s, now
> > %s." % (self.name, true_name))
> > + assert self.name == true_name, \
> > + 'Function true name redefined. Was "{}", now "{}".'.format(
> > + self.name, true_name)
> >
> > # There are two possible cases. The first time an entry-point
> > # with data is seen, self.initialized will be False. On that
> > @@ -672,17 +676,21 @@ class gl_function(gl_item):
> > parameters.append(param)
> >
> > if self.initialized:
> > - if self.return_type != return_type:
> > - raise RuntimeError("Return type changed in %s. Was %s,
> > now %s." % (name, self.return_type, return_type))
> > -
> > - if len(parameters) != len(self.parameters):
> > - raise RuntimeError("Parameter count mismatch in %s. Was
> > %d, now %d." % (name, len(self.parameters), len(parameters)))
> > + assert self.return_type == return_type, \
> > + 'Return type changed in "{}". Was "{}", now "{}".'.format(
> > + name, self.return_type, return_type)
> > + assert len(parameters) == len(self.parameters), \
> > + 'Parameter count mismatch in "{}". Was "{}", now
> > "{}".'.format(
> > + name, len(self.parameters), len(parameters))
> >
> > for j in xrange(len(parameters)):
> > p1 = parameters[j]
> > p2 = self.parameters[j]
> > - if not p1.compatible(p2):
> > - raise RuntimeError('Parameter type mismatch in %s.
> > "%s" was "%s", now "%s".' % (name, p2.name, p2.type_expr.original_string,
> > p1.type_expr.original_string))
> > + assert p1.compatible(p2), \
> > + ('Parameter type mismatch in "{}". '
> > + '"{}" was "{}", now "{}".'.format(
> > + name, p2.name, p2.type_expr.original_string,
> > + p1.type_expr.original_string))
> >
> > if true_name == name or not self.initialized:
> > self.return_type = return_type
> > @@ -700,8 +708,7 @@ class gl_function(gl_item):
> >
> > def filter_entry_points(self, entry_point_list):
> > """Filter out entry points not in entry_point_list."""
> > - if not self.initialized:
> > - raise RuntimeError('%s is not initialized yet' % self.name)
> > + assert self.initialized, '{} is not initialized
> > yet'.format(self.name)
> >
> > entry_points = []
> > for ent in self.entry_points:
> > @@ -712,8 +719,8 @@ class gl_function(gl_item):
> > else:
> > entry_points.append(ent)
> >
> > - if not entry_points:
> > - raise RuntimeError('%s has no entry point after filtering' %
> > self.name)
> > + assert entry_points, \
> > + '{} has no entry point after filtering'.format(self.name)
> >
> > self.entry_points = entry_points
> > if self.name not in entry_points:
> > diff --git a/src/mapi/glapi/gen/typeexpr.py b/src/mapi/glapi/gen/typeexpr.py
> > index adb54c1..9a900a0 100644
> > --- a/src/mapi/glapi/gen/typeexpr.py
> > +++ b/src/mapi/glapi/gen/typeexpr.py
> > @@ -117,8 +117,9 @@ class type_expression(object):
> >
> > self.original_string = type_string
> >
> > - if not type_expression.built_in_types:
> > - raise RuntimeError("create_initial_types must be called before
> > creating type_expression objects.")
> > + assert type_expression.built_in_types, \
> > + ("create_initial_types must be called before "
> > + "creating type_expression objects.")
> >
> > # Replace '*' with ' * ' in type_string. Then, split the string
> > # into tokens, separated by spaces.
> > @@ -151,43 +152,38 @@ class type_expression(object):
> > signed = 0
> > unsigned = 0
> >
> > - if not self.expr:
> > - raise RuntimeError("Invalid type expression (dangling
> > pointer)")
> > + assert self.expr, "Invalid type expression (dangling
> > pointer)"
> >
> > - if signed:
> > - raise RuntimeError("Invalid type expression (signed /
> > unsigned applied to pointer)")
> > + assert not signed, \
> > + "Invalid type expression (signed / unsigned applied to
> > pointer)"
> >
> > t = type_node()
> > t.pointer = 1
> > self.expr.append(t)
> > else:
> > - if self.expr:
> > - raise RuntimeError('Invalid type expression (garbage
> > after pointer qualifier -> "%s")' % (self.original_string))
> > + assert not self.expr, \
> > + ('Invalid type expression '
> > + '(garbage after pointer qualifier -> "{}")'.format(
> > + self.original_string))
> >
> > self.set_base_type(i, signed, unsigned, const, extra_types)
> > const = 0
> > signed = 0
> > unsigned = 0
> >
> > - if signed and unsigned:
> > - raise RuntimeError("Invalid type expression (both signed
> > and unsigned specified)")
> > + assert not (signed and unsigned), \
> > + "Invalid type expression (both signed and unsigned
> > specified)"
> >
> > - if const:
> > - raise RuntimeError("Invalid type expression (dangling const)")
> > -
> > - if unsigned:
> > - raise RuntimeError("Invalid type expression (dangling signed)")
> > -
> > - if signed:
> > - raise RuntimeError("Invalid type expression (dangling
> > unsigned)")
> > + assert not const, "Invalid type expression (dangling const)"
> > + assert not unsigned, "Invalid type expression (dangling signed)"
> > + assert not signed, "Invalid type expression (dangling unsigned)"
> >
> > def set_base_type(self, type_name, signed, unsigned, const,
> > extra_types):
> > te = type_expression.built_in_types.find_type(type_name)
> > if not te:
> > te = extra_types.find_type(type_name)
> >
> > - if not te:
> > - raise RuntimeError('Unknown base type "%s".' % (type_name))
> > + assert te, 'Unknown base type "{}".'.format(type_name)
> >
> > self.expr = copy.deepcopy(te.expr)
> >
> >
>
signature.asc
Description: signature
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
