Skip to content

[cxx-interop] Handle inherited templated operators during auto-conformance #67287

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 18, 2023

Conversation

egorzhdan
Copy link
Contributor

@egorzhdan egorzhdan commented Jul 13, 2023

This fixes the automatic std::unordered_map conformance to CxxDictionary on Linux. Previously std::unordered_map::const_iterator was not auto-conformed to UnsafeCxxInputIterator because its operator== is defined on a templated base class of const_iterator.

rdar://105220600
Resolves #66767

@egorzhdan egorzhdan added the c++ interop Feature: Interoperability with C++ label Jul 13, 2023
@egorzhdan
Copy link
Contributor Author

@swift-ci please smoke test

@egorzhdan egorzhdan force-pushed the egorzhdan/cxx-equal-equal branch from 59d7555 to 7f33e99 Compare July 13, 2023 19:58
@egorzhdan
Copy link
Contributor Author

@swift-ci please smoke test

@egorzhdan egorzhdan force-pushed the egorzhdan/cxx-equal-equal branch from 7f33e99 to 52015fe Compare July 16, 2023 00:17
@egorzhdan
Copy link
Contributor Author

@swift-ci please smoke test

@egorzhdan egorzhdan force-pushed the egorzhdan/cxx-equal-equal branch from 52015fe to 42d046b Compare July 16, 2023 12:33
@egorzhdan
Copy link
Contributor Author

@swift-ci please smoke test

1 similar comment
@egorzhdan
Copy link
Contributor Author

@swift-ci please smoke test

@egorzhdan egorzhdan force-pushed the egorzhdan/cxx-equal-equal branch from 42d046b to d6592f7 Compare July 17, 2023 14:47
@egorzhdan
Copy link
Contributor Author

@swift-ci please smoke test

@egorzhdan egorzhdan force-pushed the egorzhdan/cxx-equal-equal branch from d6592f7 to 206a585 Compare July 17, 2023 15:22
@egorzhdan
Copy link
Contributor Author

@swift-ci please smoke test

@egorzhdan egorzhdan marked this pull request as ready for review July 17, 2023 15:23
@egorzhdan egorzhdan requested review from zoecarver and hyp as code owners July 17, 2023 15:23
…mance

This fixes the automatic `std::unordered_map` conformance to CxxDictionary on Linux. Previously `std::unordered_map::const_iterator` was not auto-conformed to UnsafeCxxInputIterator because its `operator==` is defined on a templated base class of `const_iterator`.

rdar://105220600
@egorzhdan egorzhdan force-pushed the egorzhdan/cxx-equal-equal branch from 206a585 to bc56ddc Compare July 17, 2023 20:10
@egorzhdan
Copy link
Contributor Author

@swift-ci please smoke test

Copy link
Contributor

@hyp hyp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Look good, thanks!

@egorzhdan
Copy link
Contributor Author

@swift-ci please smoke test Linux

4 similar comments
@egorzhdan
Copy link
Contributor Author

@swift-ci please smoke test Linux

@egorzhdan
Copy link
Contributor Author

@swift-ci please smoke test Linux

@egorzhdan
Copy link
Contributor Author

@swift-ci please smoke test Linux

@egorzhdan
Copy link
Contributor Author

@swift-ci please smoke test Linux

Copy link
Contributor

@zoecarver zoecarver left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is really really awesome stuff. Thanks Egor.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
c++ interop Feature: Interoperability with C++
Projects
None yet
Development

Successfully merging this pull request may close these issues.

std::unordered_map conformance to CxxDictionary does not work on Linux
3 participants