@@ -231,13 +231,13 @@ _findNominalTypeDescriptor(Demangle::NodePointer node,
231
231
// / Find the context descriptor for the type extended by the given extension.
232
232
static const ContextDescriptor *
233
233
_findExtendedTypeContextDescriptor (const ExtensionContextDescriptor *extension,
234
+ Demangler &demangler,
234
235
Demangle::NodePointer *demangledNode
235
236
= nullptr ) {
236
237
Demangle::NodePointer localNode;
237
238
Demangle::NodePointer &node = demangledNode ? *demangledNode : localNode;
238
239
239
240
auto mangledName = extension->getMangledExtendedContext ();
240
- auto demangler = getDemanglerForRuntimeTypeResolution ();
241
241
node = demangler.demangleType (mangledName);
242
242
if (!node)
243
243
return nullptr ;
@@ -423,7 +423,7 @@ swift::_contextDescriptorMatchesMangling(const ContextDescriptor *context,
423
423
424
424
Demangle::NodePointer extendedContextDemangled;
425
425
auto extendedDescriptorFromDemangled =
426
- _findExtendedTypeContextDescriptor (extension,
426
+ _findExtendedTypeContextDescriptor (extension, demangler,
427
427
&extendedContextDemangled);
428
428
429
429
// Determine whether the contexts match.
@@ -822,8 +822,10 @@ bool swift::_gatherGenericParameterCounts(
822
822
std::vector<unsigned > &genericParamCounts) {
823
823
// If we have an extension descriptor, extract the extended type and use
824
824
// that.
825
+ auto demangler = getDemanglerForRuntimeTypeResolution ();
825
826
if (auto extension = dyn_cast<ExtensionContextDescriptor>(descriptor)) {
826
- if (auto extendedType = _findExtendedTypeContextDescriptor (extension))
827
+ if (auto extendedType =
828
+ _findExtendedTypeContextDescriptor (extension, demangler))
827
829
descriptor = extendedType;
828
830
}
829
831
0 commit comments