Commit 7538ecd2 authored by Stefan Behnel's avatar Stefan Behnel

broaden the effect of in-closure def node call inlining

parent 3257193a
...@@ -1649,15 +1649,16 @@ class InlineDefNodeCalls(Visitor.NodeRefCleanupMixin, Visitor.EnvTransform): ...@@ -1649,15 +1649,16 @@ class InlineDefNodeCalls(Visitor.NodeRefCleanupMixin, Visitor.EnvTransform):
visit_Node = Visitor.VisitorTransform.recurse_to_children visit_Node = Visitor.VisitorTransform.recurse_to_children
def get_constant_value_node(self, name_node): def get_constant_value_node(self, name_node):
if not name_node.cf_state or not name_node.cf_state.is_single: if name_node.cf_state is None:
# no single assignment in the current scope return None
if name_node.cf_state.cf_is_null:
return None return None
entry = self.current_env().lookup(name_node.name) entry = self.current_env().lookup(name_node.name)
if not entry or (not entry.cf_assignments if not entry or (not entry.cf_assignments
or len(entry.cf_assignments) != 1): or len(entry.cf_assignments) != 1):
# not just a single assignment in all closures # not just a single assignment in all closures
return None return None
return name_node.cf_state.one().rhs return entry.cf_assignments[0].rhs
def visit_SimpleCallNode(self, node): def visit_SimpleCallNode(self, node):
self.visitchildren(node) self.visitchildren(node)
......
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