Commit 7d95dd2e authored by Stefan Behnel's avatar Stefan Behnel

Keep utility code names across type specialisations and show it in the C file instead of "None".

parent 9f28d7d3
...@@ -501,9 +501,11 @@ class UtilityCode(UtilityCodeBase): ...@@ -501,9 +501,11 @@ class UtilityCode(UtilityCodeBase):
def specialize(self, pyrex_type=None, **data): def specialize(self, pyrex_type=None, **data):
# Dicts aren't hashable... # Dicts aren't hashable...
name = self.name
if pyrex_type is not None: if pyrex_type is not None:
data['type'] = pyrex_type.empty_declaration_code() data['type'] = pyrex_type.empty_declaration_code()
data['type_name'] = pyrex_type.specialization_name() data['type_name'] = pyrex_type.specialization_name()
name = "%s[%s]" % (name, data['type_name'])
key = tuple(sorted(data.items())) key = tuple(sorted(data.items()))
try: try:
return self._cache[key] return self._cache[key]
...@@ -519,7 +521,9 @@ class UtilityCode(UtilityCodeBase): ...@@ -519,7 +521,9 @@ class UtilityCode(UtilityCodeBase):
self.none_or_sub(self.init, data), self.none_or_sub(self.init, data),
self.none_or_sub(self.cleanup, data), self.none_or_sub(self.cleanup, data),
requires, requires,
self.proto_block) self.proto_block,
name,
)
self.specialize_list.append(s) self.specialize_list.append(s)
return s return s
......
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