diff --git a/libcxx/test/libcxx/containers/sequences/list/list.cons/db_copy.pass.cpp b/libcxx/test/libcxx/containers/sequences/list/list.cons/db_copy.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/list/list.cons/db_copy.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/list/list.cons/db_copy.pass.cpp @@ -13,11 +13,15 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "list::erase(iterator) called with an iterator not " \ + "referring to this list") #include #include -#include #include "test_macros.h" @@ -27,8 +31,7 @@ l1.push_back(1); l1.push_back(2); l1.push_back(3); std::list::iterator i = l1.begin(); std::list l2 = l1; - l2.erase(i); - assert(false); + XFAIL(l2.erase(i)); - return 0; + return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/list/list.cons/db_move.pass.cpp b/libcxx/test/libcxx/containers/sequences/list/list.cons/db_move.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/list/list.cons/db_move.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/list/list.cons/db_move.pass.cpp @@ -14,11 +14,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(1)) + +#include +#define _LIBCPP_ASSERT(x, m) assert(x) #include #include -#include #include "test_macros.h" #include "MoveOnly.h" #include "test_allocator.h" diff --git a/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list.pass.cpp b/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list.pass.cpp @@ -13,11 +13,15 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "list::splice(iterator, list) called with an iterator " \ + "not referring to this list") #include #include -#include #include "test_macros.h" @@ -26,8 +30,7 @@ { std::list v1(3); std::list v2(3); - v1.splice(v2.begin(), v2); - assert(false); + XFAIL(v1.splice(v2.begin(), v2)); } return 0; diff --git a/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter.pass.cpp b/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter.pass.cpp @@ -13,11 +13,15 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "list::splice(iterator, list, iterator) called with " \ + "second iterator not referring to list argument") #include #include -#include #include "test_macros.h" @@ -26,8 +30,7 @@ { std::list v1(3); std::list v2(3); - v1.splice(v1.begin(), v2, v1.begin()); - assert(false); + XFAIL(v1.splice(v1.begin(), v2, v1.begin())); } return 0; diff --git a/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter_iter.pass.cpp b/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter_iter.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter_iter.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/list/list.ops/db_splice_pos_list_iter_iter.pass.cpp @@ -13,11 +13,13 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +// FIXME: it doesn't seem like the right assert is caught here. +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to increment non-incrementable list::const_iterator") #include #include -#include #include "test_macros.h" @@ -26,8 +28,7 @@ { std::list v1(3); std::list v2(3); - v1.splice(v1.begin(), v2, v2.begin(), v1.end()); - assert(false); + XFAIL(v1.splice(v1.begin(), v2, v2.begin(), v1.end())); } return 0; diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_back.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_back.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_back.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_back.pass.cpp @@ -13,10 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "back() called for empty vector") #include -#include #include #include #include @@ -29,8 +30,7 @@ C c(1); assert(c.back() == 0); c.clear(); - assert(c.back() == 0); - assert(false); + XFAIL(c.back()); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_back_2.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_back_2.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_back_2.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_back_2.pass.cpp @@ -14,10 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "back() called for empty vector") #include -#include #include #include #include @@ -31,8 +32,7 @@ C c(1); assert(c.back() == 0); c.clear(); - assert(c.back() == 0); - assert(false); + XFAIL(c.back()); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_front.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_front.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_front.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_front.pass.cpp @@ -13,10 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "front() called for empty vector") #include -#include #include #include #include @@ -29,8 +30,7 @@ C c(1); assert(c.front() == 0); c.clear(); - assert(c.front() == 0); - assert(false); + XFAIL(c.front()); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_front_2.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_front_2.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_front_2.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_front_2.pass.cpp @@ -14,10 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "front() called for empty vector") #include -#include #include #include #include @@ -31,8 +32,7 @@ C c(1); assert(c.front() == 0); c.clear(); - assert(c.front() == 0); - assert(false); + XFAIL(c.front()); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_index.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_index.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_index.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_index.pass.cpp @@ -13,10 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "vector[] index out of bounds") #include -#include #include #include #include @@ -29,8 +30,7 @@ C c(1); assert(c[0] == 0); c.clear(); - assert(c[0] == 0); - assert(false); + XFAIL(c[0]); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_index_2.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_index_2.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_index_2.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_index_2.pass.cpp @@ -14,10 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "vector[] index out of bounds") #include -#include #include #include #include @@ -31,8 +32,7 @@ C c(1); assert(c[0] == 0); c.clear(); - assert(c[0] == 0); - assert(false); + XFAIL(c[0]); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_10.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_10.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_10.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_10.pass.cpp @@ -14,10 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to subtract incompatible iterators") #include -#include #include #include #include @@ -30,9 +31,7 @@ typedef std::vector > C; C c1; C c2; - int i = c1.begin() - c2.begin(); - (void)i; - assert(false); + XFAIL(c1.begin() - c2.begin()); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_11.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_11.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_11.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_11.pass.cpp @@ -14,10 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to subscript iterator outside of valid range") #include -#include #include #include #include @@ -31,8 +32,7 @@ C c(1); C::iterator i = c.begin(); assert(i[0] == 0); - assert(i[1] == 0); - assert(false); + XFAIL(i[1]); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_12.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_12.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_12.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_12.pass.cpp @@ -14,10 +14,14 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to add/subtract iterator outside of " \ + "valid range") #include -#include #include #include #include @@ -33,8 +37,7 @@ i += 1; assert(i == c.end()); i = c.begin(); - i += 2; - assert(false); + XFAIL(i + 2); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_13.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_13.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_13.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_13.pass.cpp @@ -14,10 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to decrement non-decrementable iterator") #include -#include #include #include #include @@ -32,8 +33,7 @@ C::iterator i = c.end(); --i; assert(i == c.begin()); - --i; - assert(false); + XFAIL(--i); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_14.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_14.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_14.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_14.pass.cpp @@ -14,10 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to increment non-incrementable iterator") #include -#include #include #include #include @@ -32,8 +33,7 @@ C::iterator i = c.begin(); ++i; assert(i == c.end()); - ++i; - assert(false); + XFAIL(++i); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_15.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_15.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_15.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_15.pass.cpp @@ -14,10 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to dereference a non-dereferenceable iterator") #include -#include #include #include #include @@ -30,9 +31,7 @@ typedef std::vector > C; C c(1); C::iterator i = c.end(); - T j = *i; - (void)j; - assert(false); + XFAIL(*i); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_2.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_2.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_2.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_2.pass.cpp @@ -13,10 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to compare incomparable iterators") #include -#include #include #include #include @@ -28,9 +29,7 @@ typedef std::vector C; C c1; C c2; - bool b = c1.begin() < c2.begin(); - (void)b; - assert(false); + XFAIL(c1.begin() < c2.begin()); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_3.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_3.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_3.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_3.pass.cpp @@ -13,10 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to subtract incompatible iterators") #include -#include #include #include #include @@ -28,9 +29,7 @@ typedef std::vector C; C c1; C c2; - int i = c1.begin() - c2.begin(); - (void)i; - assert(false); + XFAIL(c1.begin() - c2.begin()); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_4.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_4.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_4.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_4.pass.cpp @@ -13,10 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to subscript iterator outside of valid range") #include -#include #include #include #include @@ -29,8 +30,7 @@ C c(1); C::iterator i = c.begin(); assert(i[0] == 0); - assert(i[1] == 0); - assert(false); + XFAIL(i[1]); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_5.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_5.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_5.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_5.pass.cpp @@ -13,10 +13,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to add/subtract iterator outside of " \ + "valid range") #include -#include #include #include #include @@ -31,8 +35,7 @@ i += 1; assert(i == c.end()); i = c.begin(); - i += 2; - assert(false); + XFAIL(i + 2); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_6.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_6.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_6.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_6.pass.cpp @@ -13,10 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to decrement non-decrementable iterator") #include -#include #include #include #include @@ -30,8 +31,7 @@ C::iterator i = c.end(); --i; assert(i == c.begin()); - --i; - assert(false); + XFAIL(--i); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_7.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_7.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_7.pass.cpp @@ -13,10 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to increment non-incrementable iterator") #include -#include #include #include #include @@ -30,8 +31,7 @@ C::iterator i = c.begin(); ++i; assert(i == c.end()); - ++i; - assert(false); + XFAIL(++i); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_8.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_8.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_8.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_8.pass.cpp @@ -13,10 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to dereference a non-dereferenceable iterator") #include -#include #include #include #include @@ -28,9 +29,7 @@ typedef std::vector C; C c(1); C::iterator i = c.end(); - T j = *i; - (void)j; - assert(false); + XFAIL(*i); return 0; } diff --git a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_9.pass.cpp --- a/libcxx/test/libcxx/containers/sequences/vector/db_iterators_9.pass.cpp +++ b/libcxx/test/libcxx/containers/sequences/vector/db_iterators_9.pass.cpp @@ -14,10 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to compare incomparable iterators") #include -#include #include #include #include @@ -30,9 +31,7 @@ typedef std::vector > C; C c1; C c2; - bool b = c1.begin() < c2.begin(); - (void)b; - assert(false); + XFAIL(c1.begin() < c2.begin()); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_insert_hint_const_lvalue.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_insert_hint_const_lvalue.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_insert_hint_const_lvalue.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_insert_hint_const_lvalue.pass.cpp @@ -13,10 +13,22 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" + +#ifdef _LIBCPP_CXX03_LANG +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "unordered_map::insert(const_iterator, const value_type&) called with " \ + "an iterator not referring to this unordered_map") +#else +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "unordered_map::insert(const_iterator, value_type&&) called with an " \ + "iterator not referring to this unordered_map") +#endif #include -#include #include "test_macros.h" @@ -28,8 +40,7 @@ C c2; C::const_iterator e = c2.end(); P v(3.5, 3); - R r = c.insert(e, v); - assert(false); + XFAIL(c.insert(e, v)); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_insert_hint_rvalue.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_insert_hint_rvalue.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_insert_hint_rvalue.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_insert_hint_rvalue.pass.cpp @@ -17,10 +17,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "unordered_map::insert(const_iterator, const value_type&) called with " \ + "an iterator not referring to this unordered_map") #include -#include #include "test_macros.h" @@ -31,8 +35,7 @@ C c; C c2; C::const_iterator e = c2.end(); - R r = c.insert(e, P(3.5, 3)); - assert(false); + XFAIL(c.insert(e, P(3.5, 3))); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_10.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_10.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_10.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_10.pass.cpp @@ -14,10 +14,14 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to dereference a non-dereferenceable " \ + "unordered container iterator") #include -#include #include #include #include @@ -31,8 +35,7 @@ C c; c.insert(std::make_pair(1, "one")); C::iterator i = c.end(); - C::value_type j = *i; - assert(false); + XFAIL(*i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_7.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_7.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_7.pass.cpp @@ -13,10 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, "Attempted to increment non-incrementable unordered container iterator") #include -#include #include #include @@ -29,8 +31,7 @@ C::iterator i = c.begin(); ++i; assert(i == c.end()); - ++i; - assert(false); + XFAIL(++i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_8.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_8.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_8.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_8.pass.cpp @@ -13,10 +13,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to dereference a non-dereferenceable " \ + "unordered container iterator") #include -#include #include #include @@ -27,8 +31,7 @@ C c; c.insert(std::make_pair(1, "one")); C::iterator i = c.end(); - C::value_type j = *i; - assert(false); + XFAIL(*i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_9.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_9.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_iterators_9.pass.cpp @@ -14,10 +14,12 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, "Attempted to increment non-incrementable unordered container iterator") #include -#include #include #include #include @@ -33,8 +35,7 @@ C::iterator i = c.begin(); ++i; assert(i == c.end()); - ++i; - assert(false); + XFAIL(++i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_10.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_10.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_10.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_10.pass.cpp @@ -14,10 +14,14 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to dereference a non-dereferenceable " \ + "unordered container local_iterator") #include -#include #include #include @@ -29,8 +33,7 @@ min_allocator>> C; C c(1); C::local_iterator i = c.end(0); - C::value_type j = *i; - assert(false); + XFAIL(*i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_7.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_7.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_7.pass.cpp @@ -13,11 +13,15 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to increment non-incrementable unordered " \ + "container local_iterator") #include #include -#include #include "test_macros.h" @@ -30,8 +34,7 @@ assert(i != c.end(b)); ++i; assert(i == c.end(b)); - ++i; - assert(false); + XFAIL(++i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_8.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_8.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_8.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_8.pass.cpp @@ -13,11 +13,15 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to dereference a non-dereferenceable " \ + "unordered container local_iterator") #include #include -#include #include "test_macros.h" @@ -25,8 +29,7 @@ typedef std::unordered_map C; C c(1); C::local_iterator i = c.end(0); - C::value_type j = *i; - assert(false); + XFAIL(*i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_9.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_9.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_local_iterators_9.pass.cpp @@ -14,10 +14,14 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to increment non-incrementable unordered " \ + "container local_iterator") #include -#include #include #include @@ -33,8 +37,7 @@ assert(i != c.end(b)); ++i; assert(i == c.end(b)); - ++i; - assert(false); + XFAIL(++i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_move.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_move.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_move.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_move.pass.cpp @@ -14,10 +14,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) -#include #include +#define _LIBCPP_ASSERT(x, m) assert(x) + +#include #include #include "test_macros.h" diff --git a/libcxx/test/libcxx/containers/unord/unord.map/db_swap_1.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.map/db_swap_1.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.map/db_swap_1.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.map/db_swap_1.pass.cpp @@ -17,10 +17,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "unordered container erase(iterator) called with an " \ + "iterator not referring to this container") #include -#include #include "test_macros.h" @@ -36,8 +40,7 @@ c1.erase(i2); c2.erase(i1); std::unordered_map::iterator j = i1; - c1.erase(i1); - assert(false); + XFAIL(c1.erase(i1)); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_insert_hint_const_lvalue.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_insert_hint_const_lvalue.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_insert_hint_const_lvalue.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_insert_hint_const_lvalue.pass.cpp @@ -13,10 +13,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "unordered container::emplace_hint(const_iterator, args...) called " \ + "with an iterator not referring to this unordered container") #include -#include #include "test_macros.h" @@ -28,8 +32,7 @@ C c2; C::const_iterator e = c2.end(); P v(3.5, 3); - R r = c.insert(e, v); - assert(false); + XFAIL(c.insert(e, v)); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_insert_hint_rvalue.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_insert_hint_rvalue.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_insert_hint_rvalue.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_insert_hint_rvalue.pass.cpp @@ -17,10 +17,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "unordered container::emplace_hint(const_iterator, args...) called " \ + "with an iterator not referring to this unordered container") #include -#include #include "test_macros.h" @@ -31,8 +35,7 @@ C c; C c2; C::const_iterator e = c2.end(); - R r = c.insert(e, P(3.5, 3)); - assert(false); + XFAIL(c.insert(e, P(3.5, 3))); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_10.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_10.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_10.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_10.pass.cpp @@ -14,9 +14,13 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) -#include +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to dereference a non-dereferenceable " \ + "unordered container iterator") + #include #include #include @@ -31,8 +35,7 @@ C c; c.insert(std::make_pair(1, "one")); C::iterator i = c.end(); - C::value_type j = *i; - assert(false); + XFAIL(*i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_7.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_7.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_7.pass.cpp @@ -13,10 +13,12 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, "Attempted to increment non-incrementable unordered container iterator") #include -#include #include #include @@ -29,8 +31,7 @@ C::iterator i = c.begin(); ++i; assert(i == c.end()); - ++i; - assert(false); + XFAIL(++i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_8.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_8.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_8.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_8.pass.cpp @@ -13,9 +13,13 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) -#include +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to dereference a non-dereferenceable " \ + "unordered container iterator") + #include #include #include @@ -27,8 +31,7 @@ C c; c.insert(std::make_pair(1, "one")); C::iterator i = c.end(); - C::value_type j = *i; - assert(false); + XFAIL(*i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_9.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_9.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_iterators_9.pass.cpp @@ -14,9 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) -#include +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, "Attempted to increment non-incrementable unordered container iterator") + #include #include #include @@ -33,8 +35,7 @@ C::iterator i = c.begin(); ++i; assert(i == c.end()); - ++i; - assert(false); + XFAIL(++i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_10.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_10.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_10.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_10.pass.cpp @@ -14,10 +14,14 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to dereference a non-dereferenceable " \ + "unordered container local_iterator") #include -#include #include #include #include @@ -30,8 +34,7 @@ min_allocator>> C; C c(1); C::local_iterator i = c.end(0); - C::value_type j = *i; - assert(false); + XFAIL(*i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_7.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_7.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_7.pass.cpp @@ -13,10 +13,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to increment non-incrementable unordered " \ + "container local_iterator") #include -#include #include #include "test_macros.h" @@ -30,7 +34,7 @@ assert(i != c.end(b)); ++i; assert(i == c.end(b)); - ++i; + XFAIL(++i); assert(false); return 0; diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_8.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_8.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_8.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_8.pass.cpp @@ -13,10 +13,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to dereference a non-dereferenceable " \ + "unordered container local_iterator") #include -#include #include #include "test_macros.h" @@ -25,8 +29,7 @@ typedef std::unordered_multimap C; C c(1); C::local_iterator i = c.end(0); - C::value_type j = *i; - assert(false); + XFAIL(*i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_9.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_9.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_local_iterators_9.pass.cpp @@ -14,10 +14,14 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to increment non-incrementable unordered " \ + "container local_iterator") #include -#include #include #include #include @@ -35,7 +39,7 @@ assert(i != c.end(b)); ++i; assert(i == c.end(b)); - ++i; + XFAIL(++i); assert(false); return 0; diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_move.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_move.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_move.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_move.pass.cpp @@ -15,10 +15,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) -#include #include +#define _LIBCPP_ASSERT(x, m) assert(x) + +#include #include #include "test_macros.h" diff --git a/libcxx/test/libcxx/containers/unord/unord.multimap/db_swap_1.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multimap/db_swap_1.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multimap/db_swap_1.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multimap/db_swap_1.pass.cpp @@ -17,10 +17,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "unordered container erase(iterator) called with an " \ + "iterator not referring to this container") #include -#include #include #include "test_macros.h" @@ -38,7 +42,7 @@ c1.erase(i2); c2.erase(i1); std::unordered_multimap::iterator j = i1; - c1.erase(i1); + XFAIL(c1.erase(i1)); assert(false); return 0; diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_insert_hint_const_lvalue.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_insert_hint_const_lvalue.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_insert_hint_const_lvalue.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_insert_hint_const_lvalue.pass.cpp @@ -13,10 +13,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "unordered container::emplace_hint(const_iterator, args...) called " \ + "with an iterator not referring to this unordered container") #include -#include #include "test_macros.h" @@ -28,7 +32,7 @@ C c2; C::const_iterator e = c2.end(); P v(3.5); - R r = c.insert(e, v); + XFAIL(c.insert(e, v)); assert(false); return 0; diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_10.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_10.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_10.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_10.pass.cpp @@ -14,10 +14,14 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to dereference a non-dereferenceable " \ + "unordered container const_iterator") #include -#include #include #include "test_macros.h" @@ -28,7 +32,7 @@ typedef std::unordered_multiset, std::equal_to, min_allocator> C; C c(1); C::iterator i = c.end(); - (void) *i; + XFAIL((void)*i); assert(false); return 0; diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_7.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_7.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_7.pass.cpp @@ -13,10 +13,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to increment non-incrementable unordered " \ + "container const_iterator") #include -#include #include "test_macros.h" @@ -29,7 +33,7 @@ assert(i != c.end()); ++i; assert(i == c.end()); - ++i; + XFAIL(++i); assert(false); return 0; diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_8.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_8.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_8.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_8.pass.cpp @@ -13,10 +13,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to dereference a non-dereferenceable " \ + "unordered container const_iterator") #include -#include #include "test_macros.h" @@ -25,7 +29,7 @@ typedef std::unordered_multiset C; C c(1); C::iterator i = c.end(); - (void) *i; + XFAIL((void)*i); assert(false); return 0; diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_9.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_9.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_iterators_9.pass.cpp @@ -14,10 +14,14 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to increment non-incrementable unordered " \ + "container const_iterator") #include -#include #include #include "test_macros.h" @@ -31,7 +35,7 @@ assert(i != c.end()); ++i; assert(i == c.end()); - ++i; + XFAIL(++i); assert(false); return 0; diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_10.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_10.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_10.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_10.pass.cpp @@ -14,10 +14,14 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to dereference a non-dereferenceable " \ + "unordered container const_local_iterator") #include -#include #include #include "test_macros.h" @@ -28,8 +32,7 @@ typedef std::unordered_multiset, std::equal_to, min_allocator> C; C c(1); C::local_iterator i = c.end(0); - (void) *i; - assert(false); + XFAIL(*i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_7.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_7.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_7.pass.cpp @@ -13,10 +13,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to increment non-incrementable unordered " \ + "container const_local_iterator") #include -#include #include "test_macros.h" @@ -30,8 +34,7 @@ assert(i != c.end(b)); ++i; assert(i == c.end(b)); - ++i; - assert(false); + XFAIL(++i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_8.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_8.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_8.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_8.pass.cpp @@ -13,10 +13,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to dereference a non-dereferenceable " \ + "unordered container const_local_iterator") #include -#include #include "test_macros.h" @@ -25,8 +29,7 @@ typedef std::unordered_multiset C; C c(1); C::local_iterator i = c.end(0); - (void) *i; - assert(false); + XFAIL(*i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_9.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_9.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_local_iterators_9.pass.cpp @@ -14,10 +14,14 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to increment non-incrementable unordered " \ + "container const_local_iterator") #include -#include #include #include "test_macros.h" @@ -32,8 +36,7 @@ assert(i != c.end(b)); ++i; assert(i == c.end(b)); - ++i; - assert(false); + XFAIL(++i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_move.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_move.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_move.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_move.pass.cpp @@ -15,10 +15,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) -#include #include +#define _LIBCPP_ASSERT(x, m) assert(x) + +#include #include #include "test_macros.h" diff --git a/libcxx/test/libcxx/containers/unord/unord.multiset/db_swap_1.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.multiset/db_swap_1.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.multiset/db_swap_1.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.multiset/db_swap_1.pass.cpp @@ -17,10 +17,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "unordered container erase(iterator) called with an " \ + "iterator not referring to this container") #include -#include #include "test_macros.h" @@ -35,8 +39,7 @@ c1.erase(i2); c2.erase(i1); std::unordered_multiset::iterator j = i1; - c1.erase(i1); - assert(false); + XFAIL(c1.erase(i1)); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/db_insert_hint_const_lvalue.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_insert_hint_const_lvalue.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/db_insert_hint_const_lvalue.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/db_insert_hint_const_lvalue.pass.cpp @@ -13,10 +13,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "unordered_set::insert(const_iterator, const value_type&) called with " \ + "an iterator not referring to this unordered_set") #include -#include #include "test_macros.h" @@ -28,8 +32,7 @@ C c2; C::const_iterator e = c2.end(); P v(3.5); - R r = c.insert(e, v); - assert(false); + XFAIL(c.insert(e, v)); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_10.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_10.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_10.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_10.pass.cpp @@ -14,10 +14,14 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to dereference a non-dereferenceable " \ + "unordered container const_iterator") #include -#include #include #include "test_macros.h" @@ -28,8 +32,7 @@ typedef std::unordered_set, std::equal_to, min_allocator> C; C c(1); C::iterator i = c.end(); - (void) *i; - assert(false); + XFAIL(*i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_7.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_7.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_7.pass.cpp @@ -13,10 +13,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to increment non-incrementable unordered " \ + "container const_iterator") #include -#include #include "test_macros.h" @@ -29,8 +33,7 @@ assert(i != c.end()); ++i; assert(i == c.end()); - ++i; - assert(false); + XFAIL(++i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_8.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_8.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_8.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_8.pass.cpp @@ -13,10 +13,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to dereference a non-dereferenceable " \ + "unordered container const_iterator") #include -#include #include "test_macros.h" @@ -25,8 +29,7 @@ typedef std::unordered_set C; C c(1); C::iterator i = c.end(); - (void) *i; - assert(false); + XFAIL(*i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_9.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_9.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/db_iterators_9.pass.cpp @@ -14,10 +14,14 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to increment non-incrementable unordered " \ + "container const_iterator") #include -#include #include #include "test_macros.h" @@ -31,8 +35,7 @@ assert(i != c.end()); ++i; assert(i == c.end()); - ++i; - assert(false); + XFAIL(++i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_10.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_10.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_10.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_10.pass.cpp @@ -14,10 +14,14 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to dereference a non-dereferenceable " \ + "unordered container const_local_iterator") #include -#include #include #include "test_macros.h" @@ -28,8 +32,7 @@ typedef std::unordered_set, std::equal_to, min_allocator> C; C c(1); C::local_iterator i = c.end(0); - (void) *i; - assert(false); + XFAIL(*i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_7.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_7.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_7.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_7.pass.cpp @@ -13,10 +13,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to increment non-incrementable unordered " \ + "container const_local_iterator") #include -#include #include "test_macros.h" @@ -30,8 +34,7 @@ assert(i != c.end(b)); ++i; assert(i == c.end(b)); - ++i; - assert(false); + XFAIL(++i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_8.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_8.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_8.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_8.pass.cpp @@ -13,10 +13,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to dereference a non-dereferenceable " \ + "unordered container const_local_iterator") #include -#include #include "test_macros.h" @@ -25,8 +29,7 @@ typedef std::unordered_set C; C c(1); C::local_iterator i = c.end(0); - (void) *i; - assert(false); + XFAIL(*i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_9.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_9.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_9.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/db_local_iterators_9.pass.cpp @@ -14,10 +14,14 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to increment non-incrementable unordered " \ + "container const_local_iterator") #include -#include #include #include "test_macros.h" @@ -32,8 +36,7 @@ assert(i != c.end(b)); ++i; assert(i == c.end(b)); - ++i; - assert(false); + XFAIL(++i); return 0; } diff --git a/libcxx/test/libcxx/containers/unord/unord.set/db_move.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_move.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/db_move.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/db_move.pass.cpp @@ -14,10 +14,11 @@ // unordered_set(unordered_set&& u); // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) -#include #include +#define _LIBCPP_ASSERT(x, m) assert(x) + +#include #include #include "test_macros.h" diff --git a/libcxx/test/libcxx/containers/unord/unord.set/db_swap_1.pass.cpp b/libcxx/test/libcxx/containers/unord/unord.set/db_swap_1.pass.cpp --- a/libcxx/test/libcxx/containers/unord/unord.set/db_swap_1.pass.cpp +++ b/libcxx/test/libcxx/containers/unord/unord.set/db_swap_1.pass.cpp @@ -17,10 +17,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "unordered container erase(iterator) called with an " \ + "iterator not referring to this container") #include -#include #include "test_macros.h" @@ -35,8 +39,7 @@ c1.erase(i2); c2.erase(i1); std::unordered_set::iterator j = i1; - c1.erase(i1); - assert(false); + XFAIL(c1.erase(i1)); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/db_back.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/db_back.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/db_back.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/db_back.pass.cpp @@ -13,10 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "string::back(): string is empty") #include -#include #include #include #include @@ -28,7 +29,7 @@ S s(1, '\0'); assert(s.back() == 0); s.clear(); - assert(s.back() == 0); + XFAIL(assert(s.back() == 0)); assert(false); return 0; diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/db_back_2.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/db_back_2.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/db_back_2.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/db_back_2.pass.cpp @@ -14,10 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "string::back(): string is empty") #include -#include #include #include #include @@ -30,7 +31,7 @@ S s(1, '\0'); assert(s.back() == 0); s.clear(); - assert(s.back() == 0); + XFAIL(assert(s.back() == 0)); assert(false); return 0; diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/db_cindex.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/db_cindex.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/db_cindex.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/db_cindex.pass.cpp @@ -13,10 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "string index out of bounds") #include -#include #include #include #include @@ -27,7 +28,7 @@ typedef std::string S; const S s; assert(s[0] == 0); - assert(s[1] == 0); + XFAIL(assert(s[1] == 0)); assert(false); return 0; diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/db_cindex_2.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/db_cindex_2.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/db_cindex_2.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/db_cindex_2.pass.cpp @@ -14,10 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "string index out of bounds") #include -#include #include #include #include @@ -29,8 +30,7 @@ typedef std::basic_string, min_allocator > S; const S s; assert(s[0] == 0); - assert(s[1] == 0); - assert(false); + XFAIL(s[1]); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/db_front.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/db_front.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/db_front.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/db_front.pass.cpp @@ -13,10 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "string::front(): string is empty") #include -#include #include #include #include @@ -28,7 +29,7 @@ S s(1, '\0'); assert(s.front() == 0); s.clear(); - assert(s.front() == 0); + XFAIL(assert(s.front() == 0)); assert(false); return 0; diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/db_front_2.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/db_front_2.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/db_front_2.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/db_front_2.pass.cpp @@ -14,10 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "string::front(): string is empty") #include -#include #include #include #include @@ -30,8 +31,7 @@ S s(1, '\0'); assert(s.front() == 0); s.clear(); - assert(s.front() == 0); - assert(false); + XFAIL(s.front()); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/db_index.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/db_index.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/db_index.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/db_index.pass.cpp @@ -13,10 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "string index out of bounds") #include -#include #include #include #include @@ -27,7 +28,7 @@ typedef std::string S; S s; assert(s[0] == 0); - assert(s[1] == 0); + XFAIL(assert(s[1] == 0)); assert(false); return 0; diff --git a/libcxx/test/libcxx/strings/basic.string/string.access/db_index_2.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.access/db_index_2.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.access/db_index_2.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.access/db_index_2.pass.cpp @@ -14,10 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "string index out of bounds") #include -#include #include #include #include @@ -29,7 +30,7 @@ typedef std::basic_string, min_allocator > S; S s; assert(s[0] == 0); - assert(s[1] == 0); + XFAIL(assert(s[1] == 0)); assert(false); return 0; diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_10.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_10.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_10.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_10.pass.cpp @@ -14,10 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to subtract incompatible iterators") #include -#include #include #include #include @@ -29,9 +30,7 @@ typedef std::basic_string, min_allocator > S; S s1; S s2; - int i = s1.begin() - s2.begin(); - (void)i; - assert(false); + XFAIL(s1.begin() - s2.begin()); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_11.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_11.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_11.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_11.pass.cpp @@ -14,10 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to subscript iterator outside of valid range") #include -#include #include #include #include @@ -30,7 +31,7 @@ C c(1, '\0'); C::iterator i = c.begin(); assert(i[0] == 0); - assert(i[1] == 0); + XFAIL(assert(i[1] == 0)); assert(false); return 0; diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_12.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_12.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_12.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_12.pass.cpp @@ -14,10 +14,14 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to add/subtract " \ + "iterator outside of valid range") #include -#include #include #include #include @@ -32,7 +36,7 @@ i += 1; assert(i == c.end()); i = c.begin(); - i += 2; + XFAIL(i += 2); assert(false); return 0; diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_13.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_13.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_13.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_13.pass.cpp @@ -14,10 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to decrement non-decrementable iterator") #include -#include #include #include #include @@ -31,7 +32,7 @@ C::iterator i = c.end(); --i; assert(i == c.begin()); - --i; + XFAIL(--i); assert(false); return 0; diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_14.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_14.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_14.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_14.pass.cpp @@ -14,10 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to increment non-incrementable iterator") #include -#include #include #include #include @@ -31,7 +32,7 @@ C::iterator i = c.begin(); ++i; assert(i == c.end()); - ++i; + XFAIL(++i); assert(false); return 0; diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_15.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_15.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_15.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_15.pass.cpp @@ -14,10 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to dereference a non-dereferenceable iterator") #include -#include #include #include #include @@ -29,7 +30,7 @@ typedef std::basic_string, min_allocator > C; C c(1, '\0'); C::iterator i = c.end(); - (void)*i; + XFAIL((void)*i); assert(false); return 0; diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_2.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_2.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_2.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_2.pass.cpp @@ -13,10 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to compare incomparable iterators") #include -#include #include #include #include @@ -27,9 +28,7 @@ typedef std::string S; S s1; S s2; - bool b = s1.begin() < s2.begin(); - (void)b; - assert(false); + XFAIL(s1.begin() < s2.begin()); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_3.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_3.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_3.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_3.pass.cpp @@ -13,10 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to subtract incompatible iterators") #include -#include #include #include #include @@ -27,9 +28,7 @@ typedef std::string S; S s1; S s2; - int i = s1.begin() - s2.begin(); - (void)i; - assert(false); + XFAIL(s1.begin() - s2.begin()); return 0; } diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_4.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_4.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_4.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_4.pass.cpp @@ -13,10 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to subscript iterator outside of valid range") #include -#include #include #include #include @@ -28,7 +29,7 @@ C c(1, '\0'); C::iterator i = c.begin(); assert(i[0] == 0); - assert(i[1] == 0); + XFAIL(assert(i[1] == 0)); assert(false); return 0; diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_5.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_5.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_5.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_5.pass.cpp @@ -13,10 +13,14 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) \ + TEST_LIBCPP_ASSERT(x, m, \ + "Attempted to add/subtract " \ + "iterator outside of valid range") #include -#include #include #include #include @@ -30,7 +34,7 @@ i += 1; assert(i == c.end()); i = c.begin(); - i += 2; + XFAIL(i += 2); assert(false); return 0; diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_6.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_6.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_6.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_6.pass.cpp @@ -13,10 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to decrement non-decrementable iterator") #include -#include #include #include #include @@ -29,7 +30,7 @@ C::iterator i = c.end(); --i; assert(i == c.begin()); - --i; + XFAIL(--i); assert(false); return 0; diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_7.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_7.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_7.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_7.pass.cpp @@ -13,10 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to increment non-incrementable iterator") #include -#include #include #include #include @@ -29,7 +30,7 @@ C::iterator i = c.begin(); ++i; assert(i == c.end()); - ++i; + XFAIL(++i); assert(false); return 0; diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_8.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_8.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_8.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_8.pass.cpp @@ -13,10 +13,11 @@ // UNSUPPORTED: libcxx-no-debug-mode // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to dereference a non-dereferenceable iterator") #include -#include #include #include #include @@ -27,7 +28,7 @@ typedef std::string C; C c(1, '\0'); C::iterator i = c.end(); - (void)*i; + XFAIL((void)*i); assert(false); return 0; diff --git a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_9.pass.cpp b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_9.pass.cpp --- a/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_9.pass.cpp +++ b/libcxx/test/libcxx/strings/basic.string/string.iterators/db_iterators_9.pass.cpp @@ -14,10 +14,11 @@ // UNSUPPORTED: c++03 // ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DEBUG=1 -#define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : std::exit(0)) + +#include "debug_macros.h" +#define _LIBCPP_ASSERT(x, m) TEST_LIBCPP_ASSERT(x, m, "Attempted to compare incomparable iterators") #include -#include #include #include #include @@ -29,9 +30,7 @@ typedef std::basic_string, min_allocator > S; S s1; S s2; - bool b = s1.begin() < s2.begin(); - (void)b; - assert(false); + XFAIL(s1.begin() < s2.begin()); return 0; } diff --git a/libcxx/test/support/debug_macros.h b/libcxx/test/support/debug_macros.h new file mode 100644 --- /dev/null +++ b/libcxx/test/support/debug_macros.h @@ -0,0 +1,19 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include +#include + +bool expected_fail = false; + +#define TEST_LIBCPP_ASSERT(x, m, e) ((x) ? (void)0 : ((expected_fail && 0 == ::strcmp(m, e)) ? ::exit(0) : assert(x))) + +#define XFAIL(x) \ + expected_fail = true; \ + (void)(x); \ + assert(false)