| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 224658
|
|
|
|
| |
llvm-svn: 221689
|
|
|
|
|
|
|
|
|
| |
Fix vector asan annotations with RAII.
Add a test.
Also, remove one dead function.
Review: http://reviews.llvm.org/D4170
llvm-svn: 216995
|
|
|
|
| |
llvm-svn: 208319
|
|
|
|
|
|
| |
iterators and allocator pointers with different const-character. No changes to libc++
llvm-svn: 203479
|
|
|
|
|
|
| |
explicit. Note that libc++ already did this for string/deque/forward_list/list/vector and the unordered containers; implement it for set/multiset/map/multimap. Add tests for all the containers. Two drive-by fixes as well: add a missing explicit in <deque>, and remove a tab that snuck into a container test. This issue is also LLVM bug 15724, and resolves it.
llvm-svn: 202994
|
|
|
|
|
|
| |
the library
llvm-svn: 202885
|
|
|
|
| |
llvm-svn: 201349
|
|
|
|
|
|
| |
test suite. Moved one to /support, made it a superset, and removed all but one of the others, and iupdated all the includes. Left the odd one (thread/futures/test_allocator.h) for later.
llvm-svn: 196174
|
|
|
|
|
|
| |
Moved one to /support, removed the other, and iupdated all the includes. No functionality change
llvm-svn: 196118
|
|
|
|
|
|
| |
/support and delete the other. Then adjust all the tests that used them to include the moved one. No functionality change.
llvm-svn: 195785
|
|
|
|
|
|
|
|
|
|
|
|
| |
(iterator,
iterator, allocator) constructor with the intention of it being
implicitly converted to the allocator type, it is possible for overload
resolution to favour the (iterator, iterator, enable_if) constructor.
Eliminate this possibility by moving the enable_if to one of the
existing arguments and removing the third argument.
llvm-svn: 191145
|
|
|
|
| |
llvm-svn: 190736
|
|
|
|
| |
llvm-svn: 189140
|
|
|
|
|
|
| |
__tree_const_iterator constructor. Fix comment typos in other tests
llvm-svn: 188019
|
|
|
|
| |
llvm-svn: 187909
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. I had been detecting and trapping iterator == and \!= among iterators
in different containers as an error. But the trapping itself is actually
an error.
Consider:
#include <iostream>
#include <vector>
#include <algorithm>
template <class C>
void
display(const C& c)
{
std::cout << "{";
bool first = true;
for (const auto& x : c)
{
if (\!first)
std::cout << ", ";
first = false;
std::cout << x;
}
std::cout << "}\n";
}
int
main()
{
typedef std::vector<int> V;
V v1 = {1, 3, 5};
V v2 = {2, 4, 6};
display(v1);
display(v2);
V::iterator i = std::find(v1.begin(), v1.end(), 1);
V::iterator j = std::find(v2.begin(), v2.end(), 2);
if (*i == *j)
i = j; // perfectly legal
// ...
if (i \!= j) // the only way to check
v2.push_back(*i);
display(v1);
display(v2);
}
It is legal to assign an iterator from one container to another of the
same type. This is required to work. One might want to test whether or
not such an assignment had been made. The way one performs such a check
is using the iterator's ==, \!= operator. This is a logical and necessary
function and does not constitute an error.
2. I had a header circular dependence bug when _LIBCPP_DEBUG2 is defined.
This caused a problem in several of the libc++ tests.
Fixed.
3. There is a serious problem when _LIBCPP_DEBUG2=1 at the moment in that
std::basic_string is inoperable. std::basic_string uses __wrap_iterator
to implement its iterators. __wrap_iterator has been rigged up in debug
mode to support vector. But string hasn't been rigged up yet. This means
that one gets false positives when using std::string in debug mode. I've
upped std::string's priority in www/debug_mode.html.
llvm-svn: 187636
|
|
|
|
| |
llvm-svn: 185865
|
|
|
|
| |
llvm-svn: 185093
|
|
|
|
| |
llvm-svn: 183522
|
|
|
|
|
|
| |
self-move-assigns, send me a bug report.' Somebody finally took me up on it. vector::erase(begin(), begin()) does a self-move-assign of every element in the vector, leaving all of those elements in an unspecified state. I checked the other containers for this same bug and did not find it. Added test case.
llvm-svn: 179760
|
|
|
|
|
|
| |
disabled, so #ifdef'ing out the test.
llvm-svn: 178350
|
|
|
|
|
|
| |
bootstrap with libc++.
llvm-svn: 178116
|
|
|
|
|
|
| |
is especially important for the constructors so that is_constructible<vector<T>, I, I> gives the right answer when T can not be constructed from *I. Test case included for this latter point.
llvm-svn: 178075
|
|
|
|
|
|
| |
This partially addresses http://llvm.org/bugs/show_bug.cgi?id=15576.
llvm-svn: 178064
|
|
|
|
| |
llvm-svn: 178033
|
|
|
|
| |
llvm-svn: 178026
|
|
|
|
|
|
| |
improved error message for erasing a single element with end().
llvm-svn: 177929
|
|
|
|
| |
llvm-svn: 177908
|
|
|
|
| |
llvm-svn: 177904
|
|
|
|
|
|
| |
-D_LIBCPP_DEBUG2=1.
llvm-svn: 177897
|
|
|
|
|
|
| |
test that the debug mode is working, but that won't cause problems when debug mode isn't on. This is my first prototype of such a test. It should call std::terminate() because it's comparing iterators from different containers. And std::terminate() is rigged up to exit normally. If debug mode fails, and doesn't call terminate, then the program asserts. The test is a no-op if _LIBCPP_DEBUG2 is not defined or is defined to be 0.
llvm-svn: 177892
|
|
|
|
| |
llvm-svn: 172250
|
|
|
|
|
|
| |
-I to that directory; rename 'iterators.h' to 'iterator_test.h'; remove hard-coded paths to include files from more than 350 source files
llvm-svn: 171594
|
|
|
|
| |
llvm-svn: 171452
|
|
|
|
| |
llvm-svn: 159921
|
|
|
|
| |
llvm-svn: 139930
|
|
|
|
| |
llvm-svn: 137522
|
|
|
|
|
|
| |
into vector.
llvm-svn: 132577
|
|
|
|
| |
llvm-svn: 124508
|
|
|
|
| |
llvm-svn: 119395
|
|
|
|
|
|
| |
flags, and renamed _LIBCPP_MOVE to _LIBCPP_HAS_NO_RVALUE_REFERENCES to be more consistent with the rest of the libc++'s flags, and with clang's nomenclature.
llvm-svn: 113086
|
|
|
|
| |
llvm-svn: 111755
|
|
|
|
| |
llvm-svn: 103516
|
|
llvm-svn: 103490
|