llvm/unittests/ADT
Chandler Carruth f41971f6e7 [ADT] Fix a confusing interface spec and some annoying peculiarities
with the StringRef::split method when used with a MaxSplit argument
other than '-1' (which nobody really does today, but which should
actually work).

The spec claimed both to split up to MaxSplit times, but also to append
<= MaxSplit strings to the vector. One of these doesn't make sense.
Given the name "MaxSplit", let's go with it being a max over how many
*splits* occur, which means the max on how many strings get appended is
MaxSplit+1. I'm not actually sure the implementation correctly provided
this logic either, as it used a really opaque loop structure.

The implementation was also playing weird games with nullptr in the data
field to try to rely on a totally opaque hidden property of the split
method that returns a pair. Nasty IMO.

Replace all of this with what is (IMO) simpler code that doesn't use the
pair returning split method, and instead just finds each separator and
appends directly. I think this is a lot easier to read, and it most
definitely matches the spec. Added some tests that exercise the corner
cases around StringRef() and StringRef("") that all now pass.

I'll start using this in code in the next commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@247249 91177308-0d34-0410-b5e6-96231b3b80d8
2015-09-10 07:51:37 +00:00
..
APFloatTest.cpp
APIntTest.cpp Fix APInt value initialization to give a zero value as any sane integer type 2015-09-04 04:08:36 +00:00
APSIntTest.cpp ADTTests: merge #ifdef checks from r240436. 2015-06-24 17:05:04 +00:00
ArrayRefTest.cpp Add makeArrayRef() overload for ArrayRef input (no-op/identity) NFC 2015-09-10 00:05:04 +00:00
BitVectorTest.cpp
CMakeLists.txt Reapply "Add reverse(ContainerTy) range adapter." 2015-07-29 22:19:09 +00:00
DAGDeltaAlgorithmTest.cpp
DeltaAlgorithmTest.cpp
DenseMapTest.cpp [ADT] Teach DenseMap to support StringRef keys. 2015-06-24 10:06:29 +00:00
DenseSetTest.cpp
FoldingSet.cpp Adding full stops to comments 2015-09-04 15:28:13 +00:00
FunctionRefTest.cpp
HashingTest.cpp
ilistTest.cpp
ImmutableMapTest.cpp
ImmutableSetTest.cpp
IntEqClassesTest.cpp
IntervalMapTest.cpp
IntrusiveRefCntPtrTest.cpp
Makefile
MakeUniqueTest.cpp
MapVectorTest.cpp
OptionalTest.cpp Allow Optionals to be compared to None 2015-08-19 23:07:27 +00:00
PackedVectorTest.cpp Simplify PackedVector by removing user-defined special members that aren't any different than the defaults 2015-08-12 23:26:12 +00:00
PointerIntPairTest.cpp
PointerUnionTest.cpp
PostOrderIteratorTest.cpp
RangeAdapterTest.cpp Reapply "Add reverse(ContainerTy) range adapter." 2015-07-29 22:19:09 +00:00
SCCIteratorTest.cpp
SmallPtrSetTest.cpp
SmallStringTest.cpp Add SmallString test trying to exercise the realloc() code path 2015-08-11 17:35:49 +00:00
SmallVectorTest.cpp
SparseBitVectorTest.cpp Miscellaneous Fixes for SparseBitVector 2015-07-20 18:26:23 +00:00
SparseMultiSetTest.cpp
SparseSetTest.cpp
StringMapTest.cpp
StringRefTest.cpp [ADT] Fix a confusing interface spec and some annoying peculiarities 2015-09-10 07:51:37 +00:00
TinyPtrVectorTest.cpp
TripleTest.cpp Teach the target parsing framework to directly compute the length of all 2015-08-30 07:51:04 +00:00
TwineTest.cpp
VariadicFunctionTest.cpp