Commit e9db1e9a authored by Stefan Behnel's avatar Stefan Behnel

prevent redundant type checks when 'converting' between str and bytes type

parent cdfded6a
...@@ -274,8 +274,14 @@ class BuiltinObjectType(PyObjectType): ...@@ -274,8 +274,14 @@ class BuiltinObjectType(PyObjectType):
base_type = None base_type = None
module_name = '__builtin__' module_name = '__builtin__'
alternative_name = None # used for str/bytes duality
def __init__(self, name, cname): def __init__(self, name, cname):
self.name = name self.name = name
if name == 'str':
self.alternative_name = 'bytes'
elif name == 'bytes':
self.alternative_name = 'str'
self.cname = cname self.cname = cname
self.typeptr_cname = "&" + cname self.typeptr_cname = "&" + cname
...@@ -292,7 +298,9 @@ class BuiltinObjectType(PyObjectType): ...@@ -292,7 +298,9 @@ class BuiltinObjectType(PyObjectType):
def assignable_from(self, src_type): def assignable_from(self, src_type):
if isinstance(src_type, BuiltinObjectType): if isinstance(src_type, BuiltinObjectType):
return src_type.name == self.name return src_type.name == self.name or (
src_type.name == self.alternative_name and
src_type.name is not None)
else: else:
return not src_type.is_extension_type return not src_type.is_extension_type
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment