llvm/unittests/Support
Zachary Turner ab480f45cd [Support] Add support for unique_ptr<> to Casting.h.
Often you have a unique_ptr<T> where T supports LLVM's
casting methods, and you wish to cast it to a unique_ptr<U>.
Prior to this patch, this requires doing hacky things like:

unique_ptr<U> Casted;
if (isa<U>(Orig.get()))
  Casted.reset(cast<U>(Orig.release()));

This is overly verbose, and it would be nice to just be able
to use unique_ptr directly with cast and dyn_cast.  To this end,
this patch updates cast<> to work directly with unique_ptr<T>,
so you can now write:

auto Casted = cast<U>(std::move(Orig));

Since it's possible for dyn_cast<> to fail, however, we choose
to use a slightly different API here, because it's awkward to
write

if (auto Casted = dyn_cast<U>(std::move(Orig))) {}

when Orig may end up not having been moved at all.  So the
interface for dyn_cast is

if (auto Casted = unique_dyn_cast<U>(Orig)) {}

Where the inclusion of `unique` in the name of the cast operator
re-affirms that regardless of success of or fail of the casting,
exactly one of the input value and the return value will contain
a non-null result.

Differential Revision: https://reviews.llvm.org/D31890

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@300098 91177308-0d34-0410-b5e6-96231b3b80d8
2017-04-12 19:59:37 +00:00
..
AlignOfTest.cpp Revert r291503, "Lift the 10-type limit for AlignedCharArrayUnion", and followings. 2017-01-13 01:13:10 +00:00
AllocatorTest.cpp [unittest] Explicitly specify alignment when using BumpPtrAllocator. 2017-03-11 01:24:56 +00:00
ARMAttributeParser.cpp [ARM] const cast fix for ARMAttributeParser test 2017-02-01 12:58:57 +00:00
ArrayRecyclerTest.cpp Rename the unittest from ArrayRecylerTest.cpp to ArrayRecyclerTest.cpp. 2013-01-05 02:08:43 +00:00
BinaryStreamTest.cpp [unittest] Explicitly specify alignment when using BumpPtrAllocator. 2017-03-11 01:24:56 +00:00
BlockFrequencyTest.cpp Add - and -= operators to BlockFrequency using saturating arithmetic. 2015-10-12 18:34:00 +00:00
BranchProbabilityTest.cpp BranchProbabilityTest.cpp: Suppress warnings. [-Wsign-compare] 2015-12-18 00:18:18 +00:00
CachePruningTest.cpp Support: Add a cache pruning policy parser. 2017-03-16 03:42:00 +00:00
Casting.cpp [Support] Add support for unique_ptr<> to Casting.h. 2017-04-12 19:59:37 +00:00
Chrono.cpp [Support] Add FormatVariadic support for chrono types 2017-02-07 18:11:33 +00:00
CMakeLists.txt Support: Add a cache pruning policy parser. 2017-03-16 03:42:00 +00:00
CommandLineTest.cpp [Support][CommandLine] Make it possible to get error messages from ParseCommandLineOptions when ignoring errors. 2017-03-15 08:41:00 +00:00
CompressionTest.cpp Recommit r292214 "[Support/Compression] - Change zlib API to return Error instead of custom status" 2017-01-17 15:45:07 +00:00
ConvertUTFTest.cpp [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
DataExtractorTest.cpp [C++11] Use 'nullptr'. 2014-06-08 22:29:17 +00:00
DebugTest.cpp Fix unit test in NDEBUG build 2016-12-27 11:07:53 +00:00
DwarfTest.cpp Re-commit "Use StringRef in Support/Darf APIs (NFC)" 2016-10-05 05:59:29 +00:00
EndianStreamTest.cpp Add a test showing we can write a vector of floats. 2016-01-25 19:02:20 +00:00
EndianTest.cpp Fix another UBSan test error from r248897 and follow on fix r249689 2015-10-08 20:52:23 +00:00
ErrorOrTest.cpp Use std::forward to make ErrorOr<T> constructible from a value that has a user-defined conversion to T. No functionality change intended. 2016-02-09 04:47:58 +00:00
ErrorTest.cpp [Support][Error] Add a 'cantFail' utility function for known-safe calls to 2017-02-27 21:09:47 +00:00
FileOutputBufferTest.cpp Fix a real temp file leak in FileOutputBuffer 2016-09-02 01:10:53 +00:00
formatted_raw_ostream_test.cpp Sort the #include lines for unittest/... 2012-12-04 10:23:08 +00:00
FormatVariadicTest.cpp [Support] Add formatv support for StringLiteral 2017-02-14 16:35:56 +00:00
GlobPatternTest.cpp Move GlobPattern class from LLD to llvm/Support. 2016-12-20 23:09:09 +00:00
Host.cpp Implement host CPU detection for AArch64 2017-04-04 19:06:04 +00:00
LEB128Test.cpp [Support] Extend SLEB128 encoding support. 2017-02-10 00:02:58 +00:00
LineIteratorTest.cpp LineIterator: Provide a variant that keeps blank lines 2014-09-17 15:43:01 +00:00
LockFileManagerTest.cpp Asserting that the call to chdir succeeds in this test. Fixes some -Wunused-result warnings. 2014-08-13 11:17:41 +00:00
ManagedStatic.cpp Re-apply r211287: Remove support for LLVM runtime multi-threading. 2014-06-27 15:13:01 +00:00
MathExtrasTest.cpp [ADT/MathExtras] Make buildbot happy again. 2016-11-11 04:03:29 +00:00
MD5Test.cpp Add a function to MD5 a file's contents. 2017-03-20 23:33:18 +00:00
MemoryBufferTest.cpp Try to fix some temp file leaks in SupportTests, PR18335 2016-09-02 00:51:34 +00:00
MemoryTest.cpp Remove dead code. NFC. 2014-12-04 16:59:36 +00:00
NativeFormatTests.cpp [Support] Introduce llvm::formatv() function. 2016-11-11 23:57:40 +00:00
Path.cpp Make the home_directory test a little more resilient. 2017-03-22 16:30:06 +00:00
ProcessTest.cpp Remove dead code. NFC. 2014-12-04 16:59:36 +00:00
ProgramTest.cpp Remove unused lambda captures. NFC 2017-01-13 17:12:16 +00:00
raw_ostream_test.cpp Bring back r297624. 2017-03-13 20:00:25 +00:00
raw_pwrite_stream_test.cpp raw_pwrite_stream_test.cpp: _putenv_s() may be assumed as win32-generic. 2016-09-02 01:20:18 +00:00
raw_sha1_ostream_test.cpp Add convenient functions to compute hashes of byte vectors. 2016-11-23 00:46:09 +00:00
RegexTest.cpp [Support] - Fix possible crash in match() of llvm::Regex. 2016-09-02 08:44:46 +00:00
ReplaceFileTest.cpp Fix rename() sometimes failing if another process uses openFileForRead() 2015-10-12 15:11:47 +00:00
ScaledNumberTest.cpp Fix infinite recursion in ScaledNumber::toInt. 2015-05-01 17:59:15 +00:00
SourceMgrTest.cpp Return a std::unique_ptr when creating a new MemoryBuffer. 2014-08-27 20:03:13 +00:00
SpecialCaseListTest.cpp Support escaping in TrigramIndex. 2016-12-02 23:30:16 +00:00
StringPool.cpp StringPool: Cleanup typos in unittest comments 2014-12-15 01:04:49 +00:00
SwapByteOrderTest.cpp Unit tests for the getSwappedBytes(double) fix from r237673. 2015-05-20 14:57:43 +00:00
TargetParserTest.cpp [AArch64] Vulcan is now ThunderXT99 2017-03-07 19:42:40 +00:00
TarWriterTest.cpp Use EXPECT_EQ instead of ASSERT_EQ in a unit test. 2017-01-11 22:02:51 +00:00
Threading.cpp Rename interface for querying physical hardware concurrency 2016-10-17 14:56:53 +00:00
ThreadLocalTest.cpp ThreadLocal: Return a mutable pointer if templated with a non-const type 2014-12-15 01:04:45 +00:00
ThreadPool.cpp Remove unused lambda captures. NFC 2017-01-13 17:12:16 +00:00
TimerTest.cpp Timer: Track name and description. 2016-11-18 19:43:18 +00:00
TrailingObjectsTest.cpp Workaround MSVC bug when using TrailingObjects from a template. 2017-02-28 18:05:41 +00:00
TrigramIndexTest.cpp Support escaping in TrigramIndex. 2016-12-02 23:30:16 +00:00
TypeNameTest.cpp [Support] Add a fancy helper function to get a static name for a type. 2016-02-25 03:58:21 +00:00
UnicodeTest.cpp Move generic isPrint and columnWidth implementations to a separate header/source to allow using both generic and system-dependent versions on win32. 2013-09-04 16:00:12 +00:00
xxhashTest.cpp Add xxhash to llvm. 2016-09-27 15:45:57 +00:00
YAMLIOTest.cpp Align all scalar numbers to LLVM_YAML_IS_FLOW_SEQUENCE_VECTOR 2017-04-04 06:02:32 +00:00
YAMLParserTest.cpp [NFC] Header cleanup 2016-04-18 09:17:29 +00:00