[cxx-interop] Discard duplicating IteratorTy::iterator_category
decls
#70466
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.
libc++ recently split the
std
module into many top-level modules: llvm/llvm-project@571178aThis broke the logic that conforms C++ iterator types to
UnsafeCxxInputIterator
/UnsafeCxxRandomAccessIterator
. To determine if a C++ type is an iterator type, we look for its inner type callediterator_category
. After module std was split, Clang instantiatesstd::string::const_iterator::iterator_category
twice and doing a Clang lookup within theconst_iterator
type returns two identicalTypedefDecl
s. Clang itself has logic to merge them, but Swift doesn't.rdar://119270491