Commit 0a33f1e6 authored by Stefan Behnel's avatar Stefan Behnel

fix compiler crashes on unknown functions

parent 7c5d73af
...@@ -118,7 +118,7 @@ class IterationTransform(Visitor.VisitorTransform): ...@@ -118,7 +118,7 @@ class IterationTransform(Visitor.VisitorTransform):
# enumerate() ? # enumerate() ?
if iterator.self is None and \ if iterator.self is None and \
isinstance(function, ExprNodes.NameNode) and \ isinstance(function, ExprNodes.NameNode) and \
function.entry.is_builtin and \ function.entry and function.entry.is_builtin and \
function.name == 'enumerate': function.name == 'enumerate':
return self._transform_enumerate_iteration(node, iterator) return self._transform_enumerate_iteration(node, iterator)
...@@ -126,7 +126,7 @@ class IterationTransform(Visitor.VisitorTransform): ...@@ -126,7 +126,7 @@ class IterationTransform(Visitor.VisitorTransform):
if Options.convert_range and node.target.type.is_int: if Options.convert_range and node.target.type.is_int:
if iterator.self is None and \ if iterator.self is None and \
isinstance(function, ExprNodes.NameNode) and \ isinstance(function, ExprNodes.NameNode) and \
function.entry.is_builtin and \ function.entry and function.entry.is_builtin and \
function.name in ('range', 'xrange'): function.name in ('range', 'xrange'):
return self._transform_range_iteration(node, iterator) return self._transform_range_iteration(node, iterator)
...@@ -831,6 +831,8 @@ class OptimizeBuiltinCalls(Visitor.EnvTransform): ...@@ -831,6 +831,8 @@ class OptimizeBuiltinCalls(Visitor.EnvTransform):
# we only consider functions that are either builtin # we only consider functions that are either builtin
# Python functions or builtins that were already replaced # Python functions or builtins that were already replaced
# into a C function call (defined in the builtin scope) # into a C function call (defined in the builtin scope)
if not function.entry:
return node
is_builtin = function.entry.is_builtin \ is_builtin = function.entry.is_builtin \
or getattr(function.entry, 'scope', None) is Builtin.builtin_scope or getattr(function.entry, 'scope', None) is Builtin.builtin_scope
if not is_builtin: if not is_builtin:
......
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