Reapply "ADT: Tidy up ilist_traits static asserts, NFC"
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>
Fri, 19 Aug 2016 20:17:23 +0000 (20:17 +0000)
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>
Fri, 19 Aug 2016 20:17:23 +0000 (20:17 +0000)
commit11cb5385a9646d430cb712e4950f16b25ac44065
tree4a2d84aa8ed802c0f9fa2a1d2e3c32251b4e6914
parentb16734fbaa1b0a70c8349414239d1484e99fd018
Reapply "ADT: Tidy up ilist_traits static asserts, NFC"

This spiritually reapplies r279012 (reverted in r279052) without the
r278974 parts.  The differences:

  - Only the HasGetNext trait exists here, so I've only cleaned up (and
    tested) it.  I still added HasObsoleteCustomization since I know
    this will be expanding when r278974 is reapplied.

  - I changed the unit tests to use static_assert to catch problems
    earlier in the build.

  - I added negative tests for the type traits.

Original commit message follows.

----

Change the ilist traits to use decltype instead of sizeof, and add
HasObsoleteCustomization so that additions to this list don't
need to be added in two places.

I suspect this will now work with MSVC, since the trait tested in
r278991 seems to work.  If for some reason it continues to fail on
Windows I'll follow up by adding back the #ifndef _MSC_VER.

llvm-svn: 279312
llvm/include/llvm/ADT/ilist.h
llvm/unittests/ADT/ilistTest.cpp