mclow.lists added a comment. This all looks ok to me - all mechanical changes. I wonder if there's a better way to refactor these - there's all that duplicated code.
Does this look any better to you? Replace: try { s.replace(pos1, n1, str, pos2); LIBCPP_ASSERT(s.__invariants()); assert(pos1 <= old_size && pos2 <= str.size()); assert(s == expected); typename S::size_type xlen = std::min(n1, old_size - pos1); typename S::size_type rlen = std::min(S::npos, str.size() - pos2); assert(s.size() == old_size - xlen + rlen); } catch (std::out_of_range&) { assert(pos1 > old_size || pos2 > str.size()); assert(s == s0); } with: if(pos1 <= old_size && pos2 <= str.size()) { s.replace(pos1, n1, str, pos2); LIBCPP_ASSERT(s.__invariants()); assert(s == expected); typename S::size_type xlen = std::min(n1, old_size - pos1); typename S::size_type rlen = std::min(S::npos, str.size() - pos2); assert(s.size() == old_size - xlen + rlen); } #ifndef TEST_HAS_NO_EXCEPTIONS else { try { s.replace(pos1, n1, str, pos2); } catch (std::out_of_range&) { assert(pos1 > old_size || pos2 > str.size()); assert(s == s0); } } #endif ================ Comment at: test/std/strings/basic.string/string.access/at.pass.cpp:42 + if (pos < cs.size()) + { + assert(s.at(pos) == s[pos]); ---------------- I think you should just test `s.size()` here, not both `s` and `cs`. (the original code got it wrong, too) The assert at L45 can be removed. https://reviews.llvm.org/D26136 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits