@@ -450,7 +450,7 @@ class MetadataReader {
450450 Node::Kind::OpaqueTypeDescriptorSymbolicReference,
451451 context.getResolved ().getAddressData ());
452452 }
453-
453+
454454 return buildContextMangling (context, dem);
455455 }
456456 case Demangle::SymbolicReferenceKind::AccessorFunctionReference: {
@@ -2735,17 +2735,25 @@ class MetadataReader {
27352735 || !*parentDescriptorResult
27362736 || !parentDescriptorResult->isResolved ())
27372737 return nullptr ;
2738-
2739- auto mangledNode =
2740- demangleAnonymousContextName (parentDescriptorResult->getResolved (), dem);
2741- if (!mangledNode)
2738+
2739+ if (parentDemangling->getKind () == Node::Kind::AnonymousContext) {
2740+ auto mangledNode =
2741+ demangleAnonymousContextName (parentDescriptorResult->getResolved (), dem);
2742+ if (!mangledNode)
2743+ return nullptr ;
2744+ if (mangledNode->getKind () == Node::Kind::Global)
2745+ mangledNode = mangledNode->getChild (0 );
2746+
2747+ auto opaqueNode = dem.createNode (Node::Kind::OpaqueReturnTypeOf);
2748+ opaqueNode->addChild (mangledNode, dem);
2749+ return opaqueNode;
2750+ } else if (parentDemangling->getKind () == Node::Kind::Module) {
2751+ auto opaqueNode = dem.createNode (Node::Kind::OpaqueReturnTypeOf);
2752+ opaqueNode->addChild (parentDemangling, dem);
2753+ return opaqueNode;
2754+ } else {
27422755 return nullptr ;
2743- if (mangledNode->getKind () == Node::Kind::Global)
2744- mangledNode = mangledNode->getChild (0 );
2745-
2746- auto opaqueNode = dem.createNode (Node::Kind::OpaqueReturnTypeOf);
2747- opaqueNode->addChild (mangledNode, dem);
2748- return opaqueNode;
2756+ }
27492757 }
27502758
27512759 default :
0 commit comments