summaryrefslogtreecommitdiffstats
path: root/libcxx/test/std/utilities
Commit message (Collapse)AuthorAgeFilesLines
* Improve constexpr tests for std::anyEric Fiselier2016-09-071-9/+9
| | | | llvm-svn: 280777
* Fix pair::operator=(TupleLike&&).Eric Fiselier2016-08-291-0/+140
| | | | | | | | | | | This assignment operator was previously broken since the SFINAE always resulted in substitution failure. This caused assignments to turn into copy construction + assignment. This patch was originally committed as r279953 but was reverted due to warnings in the test-suite. This new patch corrects those warnings. llvm-svn: 279955
* Revert r279953 - Fix pair::operator=(TupleLike&&)Eric Fiselier2016-08-291-135/+0
| | | | | | | The test emits warnings causing the test-suite to fail. Since I want this patch merged into 3.9 I'll recommit it with a clean test. llvm-svn: 279954
* Fix pair::operator=(TupleLike&&).Eric Fiselier2016-08-291-0/+135
| | | | | | | | This assignment operator was previously broken since the SFINAE always resulted in substitution failure. This caused assignments to turn into copy construction + assignment. llvm-svn: 279953
* Unbreak C++03 build.Eric Fiselier2016-08-111-1/+1
| | | | llvm-svn: 278323
* Refactor test archetypes implementation.Eric Fiselier2016-08-116-68/+74
| | | | llvm-svn: 278319
* [libcxx] Add std::anyEric Fiselier2016-08-1121-0/+2488
| | | | | | | | | | | | | | | | | | | Summary: This patch adds std::any by moving/adapting <experimental/any>. This patch also implements the std::any parts of p0032r3 (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0032r3.pdf) and LWG 2509 (http://cplusplus.github.io/LWG/lwg-defects.html#2509). I plan to push it in a day or two if there are no comments. Reviewers: mclow.lists, EricWF Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D22733 llvm-svn: 278310
* Implement LWG 2148: Make non-enum default hash specialization well-formedEric Fiselier2016-08-102-5/+40
| | | | | | | | | | | | | | | | | Summary: This patch removes the static_assert for non-enum types in the primary hash template. Instead non-enum types create a hash<T> specialization that is not constructible nor callable. See also: * http://cplusplus.github.io/LWG/lwg-active.html#2543 * https://llvm.org/bugs/show_bug.cgi?id=28917 Reviewers: mclow.lists, EricWF Subscribers: mehdi_amini, cfe-commits Differential Revision: https://reviews.llvm.org/D23331 llvm-svn: 278300
* Fix an MSVC x64 compiler warning. Patch from STL@microsoft.comEric Fiselier2016-08-033-9/+12
| | | | llvm-svn: 277573
* Remove use of C++1z static assert in C++11 testEric Fiselier2016-07-251-8/+8
| | | | llvm-svn: 276608
* Implement the std::pair parts of "Improving pair and tuple". Completes N4387.Eric Fiselier2016-07-259-35/+668
| | | | llvm-svn: 276605
* Recommit r276548 - Make pair/tuples assignment operators SFINAE properly.Eric Fiselier2016-07-255-2/+334
| | | | | | | I think I've solved issues with is_assignable and references to incomplete types. The updated patch adds tests for this case. llvm-svn: 276603
* Make std::is_assignable tolerate references to incomplete types.Eric Fiselier2016-07-251-2/+5
| | | | llvm-svn: 276599
* Revert r276548 - Make pair/tuples assignment operators SFINAE properly.Eric Fiselier2016-07-255-310/+2
| | | | | | | | | | | | This is a breaking change. The SFINAE required is instantiated the second the class is instantiated, and this can cause hard SFINAE errors when applied to references to incomplete types. Ex. struct IncompleteType; extern IncompleteType it; std::tuple<IncompleteType&> t(it); // SFINAE will blow up. llvm-svn: 276598
* Don't SFINAE pair's copy assignment operator in C++03 mode.Eric Fiselier2016-07-251-0/+36
| | | | | | | | In C++03 mode evaluating the SFINAE can cause a hard error due to access control violations. This is a problem because the SFINAE is evaluated as soon as the class is instantiated, and not later. llvm-svn: 276594
* Work around MSVC's non-standard ABI for enums. Patch from STL@microsoft.comEric Fiselier2016-07-253-5/+22
| | | | llvm-svn: 276589
* Fix unique_ptr.runtime tests for null inputs. Patch from STL@microsoft.comEric Fiselier2016-07-242-0/+13
| | | | llvm-svn: 276587
* Fix MSVC unreferenced parameter warning. Patch from STL@microsoft.comEric Fiselier2016-07-241-1/+1
| | | | llvm-svn: 276583
* Guard libc++ specific tests SFINAE on std::bind's call operator. Patch from ↵Eric Fiselier2016-07-241-3/+5
| | | | | | STL@microsoft.com llvm-svn: 276576
* Make pair/tuples assignment operators SFINAE properly.Eric Fiselier2016-07-244-2/+274
| | | | llvm-svn: 276548
* Fix memory leak in test.Eric Fiselier2016-07-241-0/+4
| | | | llvm-svn: 276547
* Implement LWG 2393. Check for LValue-callability.Eric Fiselier2016-07-243-0/+65
| | | | llvm-svn: 276546
* Implement P0040r3: Extending memory management toolsEric Fiselier2016-07-249-0/+871
| | | | llvm-svn: 276544
* Implement the in_place tags from p0032r3.Eric Fiselier2016-07-231-0/+99
| | | | | | | That paper also has changes to any/optional but those will be implemented later. llvm-svn: 276537
* Unbreak traits tests by handling differences between version macros in ↵Eric Fiselier2016-07-202-2/+4
| | | | | | clang/apple-clang. llvm-svn: 276200
* Fix inheriting constructor test for std::function.Eric Fiselier2016-07-201-4/+7
| | | | | | | The test I originally checked in only worked with ToT Clang. This patch updates the test so that it works as far back as 3.5. llvm-svn: 276093
* Unbreak is_constructible tests for Clang <= 3.7.Eric Fiselier2016-07-202-1/+25
| | | | | | | There is a bug in Clang's __is_constructible builtin that causes it to return true for function types; ex [T = void()]. llvm-svn: 276092
* Add missed test in r276090.Eric Fiselier2016-07-201-0/+23
| | | | llvm-svn: 276091
* Reimplement is_constructible fallback implementation. Fixes PR21574.Eric Fiselier2016-07-202-7/+60
| | | | | | | The previous implementation relied highly on specializations to handle special cases. This new implementation lets the compiler do the work when possible. llvm-svn: 276084
* Prevent failures by marking Clock::is_steady tests as UNSUPPORTED: asan.Eric Fiselier2016-07-183-0/+12
| | | | llvm-svn: 275753
* Suppress warning in make_from_tuple tests.Eric Fiselier2016-07-181-0/+4
| | | | llvm-svn: 275748
* Implement C++17 tuple bits. Including apply and make_from_tuple.Eric Fiselier2016-07-187-0/+1151
| | | | | | | | | | This patch upgrades <tuple> to be C++17 compliant by implementing: * tuple_size_v: This was forgotten when implementing the other _v traits. * std::apply: This was added via LFTS v1 in p0220r1. * std::make_from_tuple: This was added in p0209r2. llvm-svn: 275745
* Add more tests for LWG#2582. No code changes needed, just tests.Marshall Clow2016-07-1225-19/+47
| | | | llvm-svn: 275211
* Add tests for the meta.unary.props that do not require a complete type. This ↵Marshall Clow2016-07-124-0/+14
| | | | | | is part of LWG#2582 llvm-svn: 275184
* Allow is_swappable to SFINAE on deleted/ambiguous swap functionsEric Fiselier2016-07-111-0/+21
| | | | llvm-svn: 275094
* Fix typo in #ifdef; leave tests commented out b/c gcc 4.8 harks on them.Marshall Clow2016-07-081-2/+2
| | | | llvm-svn: 274882
* Revert r274605 due to bot failure: ↵Manman Ren2016-07-061-7/+7
| | | | | | http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-expensive/244/ llvm-svn: 274651
* Fix typo in #ifdef, and re-enable tests now that the green-dragon bots are ↵Marshall Clow2016-07-061-7/+7
| | | | | | no more llvm-svn: 274605
* Handle std::get<T>(...) for std::tuple<>Eric Fiselier2016-07-021-0/+3
| | | | llvm-svn: 274422
* Rewrite std::get<Type>(...) helper using constexpr functions.Eric Fiselier2016-07-025-92/+35
| | | | llvm-svn: 274418
* Cleanup SFINAE in tuple, and add tests for reference assignmentEric Fiselier2016-07-022-0/+31
| | | | llvm-svn: 274414
* Make tuple_constructible and family lazy again.Eric Fiselier2016-07-021-0/+102
| | | | llvm-svn: 274413
* Flatten the tuple_element and __make_tuple_types implementations.Eric Fiselier2016-07-011-0/+34
| | | | | | | | | | This patch attempts to improve the QoI of std::tuples tuple_element and __make_tuple_types helpers. Previously they required O(N) instantiations, one for every element in the tuple The new implementations are O(1) after __tuple_indices<Id...> is created. llvm-svn: 274330
* Fix use of terse static assert. Patch from STL@microsoft.comEric Fiselier2016-06-301-1/+1
| | | | llvm-svn: 274206
* Implement P0163r0. Add shared_ptr::weak_type.Eric Fiselier2016-06-271-0/+6
| | | | | | | | | | This patch adds the weak_type typedef in shared_ptr. It is available in C++17 and newer. This patch also updates the _LIBCPP_STD_VER and TEST_STD_VER macros to have the value of 16, since 2016 is the current year. llvm-svn: 273839
* Implement P0358r1. Fixes for not_fn.Eric Fiselier2016-06-271-28/+69
| | | | llvm-svn: 273837
* Fix C++03 failure in enable_shared_from_this testEric Fiselier2016-06-271-1/+2
| | | | llvm-svn: 273836
* Fix PR27115 - enable_shared_from_this does not work as a virtual base class.Eric Fiselier2016-06-261-0/+16
| | | | | | | | | | | | | See https://llvm.org/bugs/show_bug.cgi?id=27115 The problem was that the conversion from 'const enable_shared_from_this<T>*' to 'const T*' didn't work if T inherited enable_shared_from_this as a virtual base class. The fix is to take the original pointer passed to shared_ptr's constructor in the __enable_weak_this method and perform an upcast to 'const T*' instead of performing a downcast from the enable_shared_from_this base. llvm-svn: 273835
* Implement LWG 2488 - Make the placeholders constexpr.Eric Fiselier2016-06-261-0/+28
| | | | | | | | | | | | | | | | | | | This patch makes the bind placeholders in std::placeholders both (1) const and (2) constexpr (See below). This is technically a breaking change for any code using the placeholders outside of std::bind and depending on them being non-const. However I don't think this will break any real world code. (1) Previously the placeholders were non-const extern globals in all dialects. This patch changes these extern globals to be const in all dialects. Since the cv-qualifiers don't participate in name mangling for globals this is an ABI compatible change. (2) Make the placeholders constexpr in C++11 and beyond. Although LWG 2488 only applies to C++17 I don't see any reason not to backport this change. llvm-svn: 273824
* Make shared_ptr constructor tests use count_new.hppEric Fiselier2016-06-225-151/+92
| | | | llvm-svn: 273379
OpenPOWER on IntegriCloud