diff options
author | Stefan Behnel <stefan_ml@behnel.de> | 2014-01-23 19:42:00 +0100 |
---|---|---|
committer | Stefan Behnel <stefan_ml@behnel.de> | 2014-01-23 19:42:00 +0100 |
commit | b844422eab02ad9236b5b63749e11d69e16dcabd (patch) | |
tree | e37d133cb072285e260ae635d66844ebae2bf96f /Cython/Compiler/ModuleNode.py | |
parent | 0b665f974669b7ad5c68c7fb3fcedad883c51426 (diff) | |
download | cython-b844422eab02ad9236b5b63749e11d69e16dcabd.tar.gz |
fix test failure
Diffstat (limited to 'Cython/Compiler/ModuleNode.py')
-rw-r--r-- | Cython/Compiler/ModuleNode.py | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/Cython/Compiler/ModuleNode.py b/Cython/Compiler/ModuleNode.py index 62b75808d..6c8703b98 100644 --- a/Cython/Compiler/ModuleNode.py +++ b/Cython/Compiler/ModuleNode.py @@ -444,6 +444,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode): # poor developer's OrderedDict vtab_dict, vtab_dict_order = {}, [] vtabslot_dict, vtabslot_dict_order = {}, [] + for module in module_list: for entry in module.c_class_entries: if entry.used and not entry.in_cinclude: @@ -451,9 +452,15 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode): key = type.vtabstruct_cname if not key: continue - assert key not in vtab_dict, key - vtab_dict[key] = entry - vtab_dict_order.append(key) + if key in vtab_dict: + # FIXME: this should *never* happen, but apparently it does + # for Cython generated utility code + from Cython.Compiler.UtilityCode import NonManglingModuleScope + assert isinstance(entry.scope, NonManglingModuleScope), str(entry.scope) + assert isinstance(vtab_dict[key].scope, NonManglingModuleScope), str(vtab_dict[key].scope) + else: + vtab_dict[key] = entry + vtab_dict_order.append(key) all_defined_here = module is env for entry in module.type_entries: if entry.used and (all_defined_here or entry.defined_in_pxd): |