if self.should_declare(entry.cname, entry):
self.put_pyobject_decl(entry)
w = self.parts['cached_builtins']
+ conditional_name = False
if entry.name == 'xrange':
# replaced by range() in Py3
+ conditional_name = True
w.putln('#if PY_MAJOR_VERSION >= 3')
self.put_cached_builtin_init(
entry.pos, StringEncoding.EncodedString('range'),
entry.cname)
+ elif entry.name == 'BaseException':
+ # replace BaseException by Exception in Py<2.5
+ conditional_name = True
+ w.putln('#if PY_VERSION_HEX < 0x02050000')
+ self.put_cached_builtin_init(
+ entry.pos, StringEncoding.EncodedString('Exception'),
+ entry.cname)
+ if conditional_name:
w.putln('#else')
self.put_cached_builtin_init(
entry.pos, StringEncoding.EncodedString(entry.name),
entry.cname)
- if entry.name == 'xrange':
+ if conditional_name:
w.putln('#endif')
def put_cached_builtin_init(self, pos, name, cname):
return self.outer_scope.lookup(name, language_level = self.context.language_level)
def declare_builtin(self, name, pos):
- if not hasattr(builtins, name) and name != 'xrange':
- # 'xrange' is special cased in Code.py
+ if not hasattr(builtins, name) and name not in ('xrange', 'BaseException'):
+ # 'xrange' and 'BaseException' are special cased in Code.py
if self.has_import_star:
entry = self.declare_var(name, py_object_type, pos)
return entry