[6.2 🍒][cxx-interop] Fix assertion failure from unavailable typedef + enum pattern #81699
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.
Explanation: ClangImporter currently uses some pretty fragile heuristics to determine whether a typedef is involved in the definition of a
{CF,NS}_OPTIONS
type. Those heuristics lead it to mistakenly recognize unavailable{CF,NS}_ENUM
s as{CF,NS}_OPTIONS
. The resulting import logic turns out to work out all fine, except for the fact that there is an assertion that does not account for this possibility. This patch broadens that assertion slightly to also allow{CF,NS}_ENUM
s along this code path.Risk: Low, this patch set consists of some refactoring (to minimize the actual functional change) and then slightly broadens the scope of an assertion. This fixes an assertion failure that happens in internal CI.
Problem: rdar://150399978
Reviewed By: @egorzhdan
Original PR: #81625