[Compile Time Constant Extraction] Query nominal type *conformances* to get at the protocols, instead of getAllProtocols()
.
#74698
+49
−3
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.
As it stands, for extension macros which add protocol conformances, the list of protocols specified on the macro's
conformances:
parameter gets added in its entirety to the list of a nominal type's protocols inConformanceLookupTable::addMacroGeneratedProtocols
. Whereas the macro itself, may only add some of the specified conformances. This means thatgetAllProtocols()
may contain a super-set of protocols captured ingetAllConformances
, some of which may not actually be generated by the macro.This change narrowly fixes ConstExtract to query actual generated conformances. Though, potentially we should make
ConformanceLookupTable::addMacroGeneratedProtocols
behave in a way that reflects the protocols the macro actually adds the conformances to, instead of the ones it may add conformances to.Resolves rdar:https://130316531