[5.7-04182022][Static Mirror] Gather local type extension conformance infos correctly #58985
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Cherry-pick of #58982
• Explanation: Conformance Infos for nominal type declarations reference the conforming type by storing an offset to the address in the binary where the type's type descriptor is located. Conformance infos for conformances applied to an extension of a type use a different mechanism: they use an indirect reference to a dynamic symbol, which may be an external symbol or a resolved address to a local type descriptor. It is the latter case that the conformance-gather implementation was missing that is added in this PR.
• Scope of Issue: Users of libSwiftStaticMirror who attempt to extract conformances that were specified on extensions to locally-defined types would not see them in the expected output.
• Risk: Low, this change only affects the code-path of binary conformance extraction.
• Automated Testing: Automated test added to the compiler test suite
Resolves rdar://93578419