[libcxx] r283994 - Fix nasty_containers.hpp for other stdlibs

Eric Fiselier via cfe-commits cfe-commits at lists.llvm.org
Wed Oct 12 02:31:26 PDT 2016


Author: ericwf
Date: Wed Oct 12 04:31:26 2016
New Revision: 283994

URL: http://llvm.org/viewvc/llvm-project?rev=283994&view=rev
Log:
Fix nasty_containers.hpp for other stdlibs

Modified:
    libcxx/trunk/test/support/nasty_containers.hpp
    libcxx/trunk/test/support/test_macros.h

Modified: libcxx/trunk/test/support/nasty_containers.hpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/support/nasty_containers.hpp?rev=283994&r1=283993&r2=283994&view=diff
==============================================================================
--- libcxx/trunk/test/support/nasty_containers.hpp (original)
+++ libcxx/trunk/test/support/nasty_containers.hpp Wed Oct 12 04:31:26 2016
@@ -14,6 +14,8 @@
 #include <vector>
 #include <list>
 
+#include "test_macros.h"
+
 template <class T>
 class nasty_vector
 {
@@ -49,27 +51,27 @@ public:
     void assign(std::initializer_list<value_type> il)  { v_.assign(il); }
 #endif
 
-    iterator               begin() _NOEXCEPT         { return v_.begin(); }
-    const_iterator         begin()   const _NOEXCEPT { return v_.begin(); }
-    iterator               end() _NOEXCEPT           { return v_.end(); }
-    const_iterator         end()     const _NOEXCEPT { return v_.end(); }
-
-    reverse_iterator       rbegin() _NOEXCEPT        { return v_.rbegin(); }
-    const_reverse_iterator rbegin()  const _NOEXCEPT { return v_.rbegin(); }
-    reverse_iterator       rend() _NOEXCEPT          { return v_.rend(); }
-    const_reverse_iterator rend()    const _NOEXCEPT { return v_.rend(); }
-
-    const_iterator         cbegin()  const _NOEXCEPT { return v_.cbegin(); }
-    const_iterator         cend()    const _NOEXCEPT { return v_.cend(); }
-    const_reverse_iterator crbegin() const _NOEXCEPT { return v_.crbegin(); }
-    const_reverse_iterator crend()   const _NOEXCEPT { return v_.crend(); }
-
-    size_type size() const _NOEXCEPT      { return v_.size(); }
-    size_type max_size() const _NOEXCEPT  { return v_.max_size(); }
-    size_type capacity() const _NOEXCEPT  { return v_.capacity(); }
-    bool empty() const _NOEXCEPT          { return v_.empty(); }
+    iterator               begin() TEST_NOEXCEPT         { return v_.begin(); }
+    const_iterator         begin()   const TEST_NOEXCEPT { return v_.begin(); }
+    iterator               end() TEST_NOEXCEPT           { return v_.end(); }
+    const_iterator         end()     const TEST_NOEXCEPT { return v_.end(); }
+
+    reverse_iterator       rbegin() TEST_NOEXCEPT        { return v_.rbegin(); }
+    const_reverse_iterator rbegin()  const TEST_NOEXCEPT { return v_.rbegin(); }
+    reverse_iterator       rend() TEST_NOEXCEPT          { return v_.rend(); }
+    const_reverse_iterator rend()    const TEST_NOEXCEPT { return v_.rend(); }
+
+    const_iterator         cbegin()  const TEST_NOEXCEPT { return v_.cbegin(); }
+    const_iterator         cend()    const TEST_NOEXCEPT { return v_.cend(); }
+    const_reverse_iterator crbegin() const TEST_NOEXCEPT { return v_.crbegin(); }
+    const_reverse_iterator crend()   const TEST_NOEXCEPT { return v_.crend(); }
+
+    size_type size() const TEST_NOEXCEPT      { return v_.size(); }
+    size_type max_size() const TEST_NOEXCEPT  { return v_.max_size(); }
+    size_type capacity() const TEST_NOEXCEPT  { return v_.capacity(); }
+    bool empty() const TEST_NOEXCEPT          { return v_.empty(); }
     void reserve(size_type n)             { v_.reserve(n); };
-    void shrink_to_fit() _NOEXCEPT        { v_.shrink_to_fit(); }
+    void shrink_to_fit() TEST_NOEXCEPT        { v_.shrink_to_fit(); }
 
     reference       operator[](size_type n)       { return v_[n]; }
     const_reference operator[](size_type n) const { return v_[n]; }
@@ -81,8 +83,8 @@ public:
     reference       back()        { return v_.back(); }
     const_reference back() const  { return v_.back(); }
 
-    value_type*       data() _NOEXCEPT       { return v_.data(); }
-    const value_type* data() const _NOEXCEPT { return v_.data(); }
+    value_type*       data() TEST_NOEXCEPT       { return v_.data(); }
+    const value_type* data() const TEST_NOEXCEPT { return v_.data(); }
 
     void push_back(const value_type& x)     { v_.push_back(x); }
 #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
@@ -117,12 +119,17 @@ public:
     iterator erase(const_iterator pos)                        { return v_.erase(pos); }
     iterator erase(const_iterator first, const_iterator last) { return v_.erase(first, last); }
 
-    void clear() _NOEXCEPT { v_.clear(); }
+    void clear() TEST_NOEXCEPT { v_.clear(); }
 
     void resize(size_type sz)                      { v_.resize(sz); }
     void resize(size_type sz, const value_type& c) { v_.resize(sz, c); }
 
-    void swap(nasty_vector &nv) _NOEXCEPT_(std::__is_nothrow_swappable<nested_container>::value)
+    void swap(nasty_vector &nv)
+#if TEST_STD_VER > 14
+    noexcept(std::is_nothrow_swappable<nested_container>::value)
+#elif defined(_LIBCPP_VERSION)
+    TEST_NOEXCEPT_COND(std::__is_nothrow_swappable<nested_container>::value)
+#endif
     { v_.swap(nv.v_); }
 
     nasty_vector *operator &()             { assert(false); return nullptr; }  // nasty
@@ -176,29 +183,29 @@ public:
 #endif
 
 
-    iterator               begin() _NOEXCEPT         { return l_.begin(); }
-    const_iterator         begin()   const _NOEXCEPT { return l_.begin(); }
-    iterator               end() _NOEXCEPT           { return l_.end(); }
-    const_iterator         end()     const _NOEXCEPT { return l_.end(); }
-
-    reverse_iterator       rbegin() _NOEXCEPT        { return l_.rbegin(); }
-    const_reverse_iterator rbegin()  const _NOEXCEPT { return l_.rbegin(); }
-    reverse_iterator       rend() _NOEXCEPT          { return l_.rend(); }
-    const_reverse_iterator rend()    const _NOEXCEPT { return l_.rend(); }
-
-    const_iterator         cbegin()  const _NOEXCEPT { return l_.cbegin(); }
-    const_iterator         cend()    const _NOEXCEPT { return l_.cend(); }
-    const_reverse_iterator crbegin() const _NOEXCEPT { return l_.crbegin(); }
-    const_reverse_iterator crend()   const _NOEXCEPT { return l_.crend(); }
+    iterator               begin() TEST_NOEXCEPT         { return l_.begin(); }
+    const_iterator         begin()   const TEST_NOEXCEPT { return l_.begin(); }
+    iterator               end() TEST_NOEXCEPT           { return l_.end(); }
+    const_iterator         end()     const TEST_NOEXCEPT { return l_.end(); }
+
+    reverse_iterator       rbegin() TEST_NOEXCEPT        { return l_.rbegin(); }
+    const_reverse_iterator rbegin()  const TEST_NOEXCEPT { return l_.rbegin(); }
+    reverse_iterator       rend() TEST_NOEXCEPT          { return l_.rend(); }
+    const_reverse_iterator rend()    const TEST_NOEXCEPT { return l_.rend(); }
+
+    const_iterator         cbegin()  const TEST_NOEXCEPT { return l_.cbegin(); }
+    const_iterator         cend()    const TEST_NOEXCEPT { return l_.cend(); }
+    const_reverse_iterator crbegin() const TEST_NOEXCEPT { return l_.crbegin(); }
+    const_reverse_iterator crend()   const TEST_NOEXCEPT { return l_.crend(); }
 
     reference       front()       { return l_.front(); }
     const_reference front() const { return l_.front(); }
     reference       back()        { return l_.back(); }
     const_reference back() const  { return l_.back(); }
 
-    size_type size() const _NOEXCEPT      { return l_.size(); }
-    size_type max_size() const _NOEXCEPT  { return l_.max_size(); }
-    bool empty() const _NOEXCEPT          { return l_.empty(); }
+    size_type size() const TEST_NOEXCEPT      { return l_.size(); }
+    size_type max_size() const TEST_NOEXCEPT  { return l_.max_size(); }
+    bool empty() const TEST_NOEXCEPT          { return l_.empty(); }
 
     void push_front(const value_type& x)    { l_.push_front(x); }
     void push_back(const value_type& x)     { l_.push_back(x); }
@@ -241,10 +248,15 @@ public:
     void resize(size_type sz)                      { l_.resize(); }
     void resize(size_type sz, const value_type& c) { l_.resize(c); }
 
-    void swap(nasty_list &nl) _NOEXCEPT_(std::__is_nothrow_swappable<nested_container>::value)
+    void swap(nasty_list &nl)
+#if TEST_STD_VER > 14
+    noexcept(std::is_nothrow_swappable<nested_container>::value)
+#elif defined(_LIBCPP_VERSION)
+    TEST_NOEXCEPT_COND(std::__is_nothrow_swappable<nested_container>::value)
+#endif
     { l_.swap(nl.l_); }
 
-    void clear() _NOEXCEPT { l_.clear(); }
+    void clear() TEST_NOEXCEPT { l_.clear(); }
 
 //     void splice(const_iterator position, list& x);
 //     void splice(const_iterator position, list&& x);
@@ -284,7 +296,7 @@ bool operator==(const nasty_list<T>& x,
 class nasty_mutex
 {
 public:
-     nasty_mutex() _NOEXCEPT {}
+     nasty_mutex() TEST_NOEXCEPT {}
      ~nasty_mutex() {}
 
 	nasty_mutex *operator& ()   { assert(false); return nullptr; }
@@ -297,8 +309,8 @@ private:
 
 public:
     void lock()               {}
-    bool try_lock() _NOEXCEPT { return true; }
-    void unlock() _NOEXCEPT   {}
+    bool try_lock() TEST_NOEXCEPT { return true; }
+    void unlock() TEST_NOEXCEPT   {}
 
     // Shared ownership
     void lock_shared()     {}

Modified: libcxx/trunk/test/support/test_macros.h
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/support/test_macros.h?rev=283994&r1=283993&r2=283994&view=diff
==============================================================================
--- libcxx/trunk/test/support/test_macros.h (original)
+++ libcxx/trunk/test/support/test_macros.h Wed Oct 12 04:31:26 2016
@@ -88,6 +88,7 @@
 #if TEST_STD_VER >= 11
 #define TEST_CONSTEXPR constexpr
 #define TEST_NOEXCEPT noexcept
+#define TEST_NOEXCEPT_COND(...) noexcept(__VA_ARGS__)
 # if TEST_STD_VER >= 14
 #   define TEST_CONSTEXPR_CXX14 constexpr
 # else
@@ -97,6 +98,7 @@
 #define TEST_CONSTEXPR
 #define TEST_CONSTEXPR_CXX14
 #define TEST_NOEXCEPT
+#define TEST_NOEXCEPT_COND(...)
 #endif
 
 #if !TEST_HAS_FEATURE(cxx_rtti) && !defined(__cpp_rtti) \




More information about the cfe-commits mailing list