[libc++] Fix a hard error in `contiguous_iterator<NoOperatorArrowIter>`.Evaluating `contiguous_iterator` on an iterator that satisfies all theconstraints except the `to_address` constraint and doe
[libc++] Fix a hard error in `contiguous_iterator<NoOperatorArrowIter>`.Evaluating `contiguous_iterator` on an iterator that satisfies all theconstraints except the `to_address` constraint and doesn't have`operator->` defined results in a hard error. This is becauseinstantiating `to_address` ends up instantiating templatesdependent on the given type which might lead to a hard error evenin a SFINAE context.Differential Revision: https://reviews.llvm.org/D130835(cherry picked from commit 52d4c5016c4f8eca6abe84f658fc5f358bdfd2d0)
show more ...
[libc++][test] Adds an cpp20_output_iterator.This iterator is used to test code that only needs to satisfy theoutput_iterator concept. Follow-up changes will use this iterator inolder language St
[libc++][test] Adds an cpp20_output_iterator.This iterator is used to test code that only needs to satisfy theoutput_iterator concept. Follow-up changes will use this iterator inolder language Standards.Reviewed By: ldionne, #libc, philnik, var-constDifferential Revision: https://reviews.llvm.org/D122072
[libc++] Replace _LIBCPP_HAS_NO_CONCEPTS with _LIBCPP_STD_VER > 17. NFCI.All supported compilers that support C++20 now support concepts. So, remove`_LIB_LIBCPP_HAS_NO_CONCEPTS` in favor of `_LIBC
[libc++] Replace _LIBCPP_HAS_NO_CONCEPTS with _LIBCPP_STD_VER > 17. NFCI.All supported compilers that support C++20 now support concepts. So, remove`_LIB_LIBCPP_HAS_NO_CONCEPTS` in favor of `_LIBCPP_STD_VER > 17`. Similarly inthe tests, remove `// UNSUPPORTED: libcpp-no-concepts`.Differential Revision: https://reviews.llvm.org/D121528
[libc++][NFC] Use cpp17_output_iterator in tests.The renames the output_iterator to cpp17_output_iterator. Theseiterators are still used in C++20 so it's not possible to change thecurrent type to
[libc++][NFC] Use cpp17_output_iterator in tests.The renames the output_iterator to cpp17_output_iterator. Theseiterators are still used in C++20 so it's not possible to change thecurrent type to the new C++20 requirements. This is done in a similarfashion as the cpp17_input_iterator.Reviewed By: #libc, Quuxplusone, ldionneDifferential Revision: https://reviews.llvm.org/D117950
[libc++] Move libc++ specific tests to `libcxx/test/libcxx`This is consistent with what we've been doing forever.
[libc++] Clarify the name of Lit features related to standard library selectionBefore this patch, we had features named 'libc++', 'libstdc++' and'msvc' to describe the three implementations that u
[libc++] Clarify the name of Lit features related to standard library selectionBefore this patch, we had features named 'libc++', 'libstdc++' and'msvc' to describe the three implementations that use our test suite.This patch renames them to 'stdlib=libc++', 'stdlib=libstdc++', etcto avoid confusion between MSVC's STL and the MSVC compiler (or Clangin MSVC mode).Furthermore, this prepares the terrain for adding support for additional"implementations" to the test suite. Basically, I'd like to be able totreat Apple's libc++ differently from LLVM's libc++ for the purpose oftesting, because those effectively behave in different ways in some aspects.
[libcxx] contiguous iterator concept: don't require pointer or complete element types`contiguous_iterator` requires the iterator type passed is either apointer type or that the element type of the
[libcxx] contiguous iterator concept: don't require pointer or complete element types`contiguous_iterator` requires the iterator type passed is either apointer type or that the element type of the iterator is a completeobject type. These constraints are not part of the current wording indefining the `contiguous_iterator` concept - adjust the concept toreflect this.Inspired from discussion at https://reviews.llvm.org/D108645.Reviewed By: #libc, ldionneDifferential Revision: https://reviews.llvm.org/D108855
[libcxx][ranges] Add `ranges::iota_view`.Differential Revision: https://reviews.llvm.org/D107396
[libc++] Remove Lit annotations for unsupported GCC versions from the test suiteSince we officially don't support several older compilers now, we candrop a lot of the markup in the test suite. Thi
[libc++] Remove Lit annotations for unsupported GCC versions from the test suiteSince we officially don't support several older compilers now, we candrop a lot of the markup in the test suite. This helps keep the testsuite simple and makes sure that UNSUPPORTED annotations don't rot.This is the first patch of a series that will remove annotations forcompilers that are now unsupported.Differential Revision: https://reviews.llvm.org/D107787
[libc++] Implement the output_iterator and output_range conceptsDifferential Revision: https://reviews.llvm.org/D106704
[libc++] Remove random [[nodiscard]] in the test suite
[libc++] [test] Fix some GCC 11 errors/warnings in these tests. NFCI.Differential Revision: https://reviews.llvm.org/D104228
[libcxx][ranges] removes default_initializable from weakly_incrementable and viewalso:* removes default constructors from predefined iterators* makes span and string_view viewsPartially implem
[libcxx][ranges] removes default_initializable from weakly_incrementable and viewalso:* removes default constructors from predefined iterators* makes span and string_view viewsPartially implements P2325.Partially resolves LWG3326.Differential Revision: https://reviews.llvm.org/D102468
[libc++] Add all indirect callable concepts and projectedDifferential Revision: https://reviews.llvm.org/D101277
[libcxx][ranges] Add `contiguous_iterator`.Differential Revision: https://reviews.llvm.org/D101396
[libcxx][ranges] Add `random_access_{iterator,range}`.Differential Revision: https://reviews.llvm.org/D101316
[libcxx][iterator][ranges] adds `bidirectional_iterator` and `bidirectional_range`Implements parts of: * P0896R4 The One Ranges Proposal`Depends on D100275.Differential Revision: https://re
[libcxx][iterator][ranges] adds `bidirectional_iterator` and `bidirectional_range`Implements parts of: * P0896R4 The One Ranges Proposal`Depends on D100275.Differential Revision: https://reviews.llvm.org/D100278
[libcxx][iterator][ranges] adds `forward_iterator` and `forward_range`Implements parts of: * P0896R4 The One Ranges Proposal`Depends on D100271.Differential Revision: https://reviews.llvm.o
[libcxx][iterator][ranges] adds `forward_iterator` and `forward_range`Implements parts of: * P0896R4 The One Ranges Proposal`Depends on D100271.Differential Revision: https://reviews.llvm.org/D100275
[libcxx][nfc] prefixes test type `input_iterator` with `cpp17_`C++20 revised the definition of what it means to be an iterator. Whileall _Cpp17InputIterators_ satisfy `std::input_iterator`, the re
[libcxx][nfc] prefixes test type `input_iterator` with `cpp17_`C++20 revised the definition of what it means to be an iterator. Whileall _Cpp17InputIterators_ satisfy `std::input_iterator`, the reverseisn't true. D100271 introduces a new test adaptor to accommodate thisnew definition (`cpp20_input_iterator`).In order to help readers immediately distinguish which input iteratoradaptor is _Cpp17InputIterator_, the current `input_iterator` adaptorhas been prefixed with `cpp17_`.Differential Revision: https://reviews.llvm.org/D101242
[libcxx] Reenable ranges for clang-clThis reverts a224bf8ec423b42eea251407e7a6cc8398a5edf4 and fixes theunderlying issue.The underlying issue is simply that MSVC headers contains a definelike "
[libcxx] Reenable ranges for clang-clThis reverts a224bf8ec423b42eea251407e7a6cc8398a5edf4 and fixes theunderlying issue.The underlying issue is simply that MSVC headers contains a definelike "#define __in", where __in is one macro in the MSVC SourceCode Annotation Language, defined in sal.hJust use a different variable name than "__in"__indirectly_readable_impl, and add "__in" to nasty_macros.h justlike the existing __out. (Also adding a couple more potentiallyconflicting ones.)Differential Revision: https://reviews.llvm.org/D101613
[libcxx][iterator][ranges] adds `input_iterator` and `input_range`Implements parts of: * P0896R4 The One Ranges Proposal`Depends on D100269.Differential Revision: https://reviews.llvm.org/D
[libcxx][iterator][ranges] adds `input_iterator` and `input_range`Implements parts of: * P0896R4 The One Ranges Proposal`Depends on D100269.Differential Revision: https://reviews.llvm.org/D100271
[libc++][ranges] iterator.concept.sizedsentinel: sized_sentinel_for and disable_sized_sentinel_for.Based on D100160.Reviewed By: cjdb, ldionne, Quuxplusone, #libc, misccoDifferential Revision:
[libc++][ranges] iterator.concept.sizedsentinel: sized_sentinel_for and disable_sized_sentinel_for.Based on D100160.Reviewed By: cjdb, ldionne, Quuxplusone, #libc, misccoDifferential Revision: https://reviews.llvm.org/D100587
[libcxx][iterator] adds `std::input_or_output_iterator` and `std::sentinel_for`Implements parts of: * P0896R4 The One Ranges Proposal`Depends on D100080Differential Revision: https://review
[libcxx][iterator] adds `std::input_or_output_iterator` and `std::sentinel_for`Implements parts of: * P0896R4 The One Ranges Proposal`Depends on D100080Differential Revision: https://reviews.llvm.org/D100160
[libcxx][iterator] adds `std::weakly_incrementable` and `std::incrementable`Implements parts of: * P0896R4 The One Ranges Proposal`Depends on D100073.Reviewed By: ldionne, zoecarver, #libc
[libcxx][iterator] adds `std::weakly_incrementable` and `std::incrementable`Implements parts of: * P0896R4 The One Ranges Proposal`Depends on D100073.Reviewed By: ldionne, zoecarver, #libcDifferential Revision: https://reviews.llvm.org/D100080
[libcxx] disables ranges for clang-clclang-cl doesn't properly handle concepts right now and is failing CI.Differential Revision: https://reviews.llvm.org/D101205
12