From e0fc31313c219c5f8bbef0814e95ace43224f81a Mon Sep 17 00:00:00 2001 From: Stefan Behnel Date: Thu, 7 Apr 2011 13:26:11 +0200 Subject: [PATCH] enable type inference in generators (but keep it disabled for variables in other closures) --- Cython/Compiler/TypeInference.py | 8 ++++++-- tests/bugs.txt | 1 - 2 files changed, 6 insertions(+), 3 deletions(-) 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 -- 2.26.2