From: Stefan Behnel Date: Thu, 7 Apr 2011 11:26:11 +0000 (+0200) Subject: enable type inference in generators (but keep it disabled for variables in other... X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=e0fc31313c219c5f8bbef0814e95ace43224f81a;p=cython.git enable type inference in generators (but keep it disabled for variables in other closures) --- diff --git a/Cython/Compiler/TypeInference.py b/Cython/Compiler/TypeInference.py index 04c39dab..e1fd9df2 100644 --- a/Cython/Compiler/TypeInference.py +++ b/Cython/Compiler/TypeInference.py @@ -221,9 +221,9 @@ class SimpleAssignmentTypeInferer(object): # TODO: Implement a real type inference algorithm. # (Something more powerful than just extending this one...) def infer_types(self, scope): - closure_or_inner = scope.is_closure_scope or (scope.outer_scope and scope.outer_scope.is_closure_scope) - enabled = not closure_or_inner and scope.directives['infer_types'] + enabled = scope.directives['infer_types'] verbose = scope.directives['infer_types.verbose'] + if enabled == True: spanning_type = aggressive_spanning_type elif enabled is None: # safe mode @@ -239,6 +239,10 @@ class SimpleAssignmentTypeInferer(object): ready_to_infer = [] for name, entry in scope.entries.items(): if entry.type is unspecified_type: + if entry.in_closure: + # cross-closure type inference is not currently supported + entry.type = py_object_type + continue all = set() for expr in entry.assignments: all.update(expr.type_dependencies(scope)) diff --git a/tests/bugs.txt b/tests/bugs.txt index f1478a3b..c8845007 100644 --- a/tests/bugs.txt +++ b/tests/bugs.txt @@ -18,7 +18,6 @@ genexpr_iterable_lookup_T600 for_from_pyvar_loop_T601 decorators_T593 temp_sideeffects_T654 -generator_type_inference # CPython regression tests that don't current work: pyregr.test_threadsignals