Commit b7a13a42 authored by Stefan Behnel's avatar Stefan Behnel

Merge branch '0.23.x'

parents e36804d0 00bd02fd
...@@ -4201,15 +4201,20 @@ class FinalOptimizePhase(Visitor.CythonTransform, Visitor.NodeRefCleanupMixin): ...@@ -4201,15 +4201,20 @@ class FinalOptimizePhase(Visitor.CythonTransform, Visitor.NodeRefCleanupMixin):
may_be_a_method = True may_be_a_method = True
if function.type is Builtin.type_type: if function.type is Builtin.type_type:
may_be_a_method = False may_be_a_method = False
elif function.is_attribute:
if function.entry.type.is_cfunction:
# optimised builtin method
may_be_a_method = False
elif function.is_name: elif function.is_name:
if function.entry.is_builtin: entry = function.entry
if entry.is_builtin or entry.type.is_cfunction:
may_be_a_method = False may_be_a_method = False
elif function.entry.cf_assignments: elif entry.cf_assignments:
# local functions/classes are definitely not methods # local functions/classes are definitely not methods
non_method_nodes = (ExprNodes.PyCFunctionNode, ExprNodes.ClassNode, ExprNodes.Py3ClassNode) non_method_nodes = (ExprNodes.PyCFunctionNode, ExprNodes.ClassNode, ExprNodes.Py3ClassNode)
may_be_a_method = any( may_be_a_method = any(
assignment.rhs and not isinstance(assignment.rhs, non_method_nodes) assignment.rhs and not isinstance(assignment.rhs, non_method_nodes)
for assignment in function.entry.cf_assignments) for assignment in entry.cf_assignments)
if may_be_a_method: if may_be_a_method:
node = self.replace(node, ExprNodes.PyMethodCallNode.from_node( node = self.replace(node, ExprNodes.PyMethodCallNode.from_node(
node, function=function, arg_tuple=node.arg_tuple, type=node.type)) node, function=function, arg_tuple=node.arg_tuple, type=node.type))
......
...@@ -83,6 +83,16 @@ def dict_call_kwargs(): ...@@ -83,6 +83,16 @@ def dict_call_kwargs():
return d return d
def items_of_dict_call():
"""
>>> items_of_dict_call()
[('answer1', 42), ('answer2', 42), ('parrot1', u'resting'), ('parrot2', u'resting')]
"""
kwargs = dict(parrot1=u"resting", answer1=42)
items = dict(kwargs.items(), parrot2=u"resting", answer2=42, **kwargs).items()
return sorted(items)
def item_creation_sideeffect(L, sideeffect, unhashable): def item_creation_sideeffect(L, sideeffect, unhashable):
""" """
>>> def sideeffect(x): >>> def sideeffect(x):
......
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