[libcxx-commits] [libcxx] 4537bda - [libc++][NFC] Change some std::pair tests from .compile.fail.cpp to .verify.cpp

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Sat Feb 11 09:43:19 PST 2023


Author: Louis Dionne
Date: 2023-02-11T09:43:01-08:00
New Revision: 4537bda929bd874658f9d66ad2c55d81268c8b98

URL: https://github.com/llvm/llvm-project/commit/4537bda929bd874658f9d66ad2c55d81268c8b98
DIFF: https://github.com/llvm/llvm-project/commit/4537bda929bd874658f9d66ad2c55d81268c8b98.diff

LOG: [libc++][NFC] Change some std::pair tests from .compile.fail.cpp to .verify.cpp

Those tests are arguably not great anyways, but it's better to have
then as .verify tests than compile failure tests, which are too brittle.

Added: 
    libcxx/test/std/utilities/utility/pairs/pair.astuple/get_const.verify.cpp
    libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type1.verify.cpp
    libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type2.verify.cpp
    libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type3.verify.cpp
    libcxx/test/std/utilities/utility/pairs/pair.astuple/tuple_element.verify.cpp
    libcxx/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct_t.verify.cpp
    libcxx/test/std/utilities/utility/pairs/pairs.pair/default.explicit.verify.cpp
    libcxx/test/std/utilities/utility/pairs/pairs.pair/not_constexpr_cxx11.verify.cpp

Modified: 
    

Removed: 
    libcxx/test/std/utilities/utility/pairs/pair.astuple/get_const.compile.fail.cpp
    libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type1.compile.fail.cpp
    libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type2.compile.fail.cpp
    libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type3.compile.fail.cpp
    libcxx/test/std/utilities/utility/pairs/pair.astuple/tuple_element.fail.cpp
    libcxx/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct_t.fail.cpp
    libcxx/test/std/utilities/utility/pairs/pairs.pair/default.explicit.fail.cpp
    libcxx/test/std/utilities/utility/pairs/pairs.pair/not_constexpr_cxx11.fail.cpp


################################################################################
diff  --git a/libcxx/test/std/utilities/utility/pairs/pair.astuple/get_const.compile.fail.cpp b/libcxx/test/std/utilities/utility/pairs/pair.astuple/get_const.verify.cpp
similarity index 71%
rename from libcxx/test/std/utilities/utility/pairs/pair.astuple/get_const.compile.fail.cpp
rename to libcxx/test/std/utilities/utility/pairs/pair.astuple/get_const.verify.cpp
index e186514f0eab2..a920c69a1d52b 100644
--- a/libcxx/test/std/utilities/utility/pairs/pair.astuple/get_const.compile.fail.cpp
+++ b/libcxx/test/std/utilities/utility/pairs/pair.astuple/get_const.verify.cpp
@@ -15,17 +15,9 @@
 //     get(const pair<T1, T2>&);
 
 #include <utility>
-#include <cassert>
 
-int main(int, char**)
-{
-    {
-        typedef std::pair<int, short> P;
-        const P p(3, 4);
-        assert(std::get<0>(p) == 3);
-        assert(std::get<1>(p) == 4);
-        std::get<0>(p) = 5;
-    }
-
-  return 0;
+void f() {
+  typedef std::pair<int, short> P;
+  const P p(3, 4);
+  std::get<0>(p) = 5; // expected-error {{cannot assign to return value}}
 }

diff  --git a/libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type3.compile.fail.cpp b/libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type1.verify.cpp
similarity index 70%
rename from libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type3.compile.fail.cpp
rename to libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type1.verify.cpp
index 559ff3c30ef09..cae19a12a37b8 100644
--- a/libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type3.compile.fail.cpp
+++ b/libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type1.verify.cpp
@@ -7,16 +7,12 @@
 //===----------------------------------------------------------------------===//
 
 // UNSUPPORTED: c++03, c++11
+
 #include <utility>
 #include <complex>
 
-#include <cassert>
-
-int main(int, char**)
-{
-    typedef std::unique_ptr<int> upint;
-    std::pair<upint, int> t(upint(new int(4)), 23);
-    upint p = std::get<upint>(t);
-
-  return 0;
+void f() {
+  typedef std::complex<float> cf;
+  auto t1 = std::make_pair<int, double>(42, 3.4);
+  (void)std::get<cf>(t1); // expected-error {{no matching function for call to 'get'}}
 }

diff  --git a/libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type2.compile.fail.cpp b/libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type2.verify.cpp
similarity index 69%
rename from libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type2.compile.fail.cpp
rename to libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type2.verify.cpp
index aa6eaaa10f1e7..1ba894baaa31f 100644
--- a/libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type2.compile.fail.cpp
+++ b/libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type2.verify.cpp
@@ -7,16 +7,12 @@
 //===----------------------------------------------------------------------===//
 
 // UNSUPPORTED: c++03, c++11
+
 #include <utility>
 #include <complex>
 
-#include <cassert>
-
-int main(int, char**)
-{
-    typedef std::complex<float> cf;
-    auto t1 = std::make_pair<int, int> ( 42, 43 );
-    assert ( std::get<int>(t1) == 42 ); // two ints
-
-  return 0;
+void f() {
+  typedef std::complex<float> cf;
+  auto t1 = std::make_pair<int, int> ( 42, 43 );
+  (void)std::get<int>(t1); // expected-error {{call to 'get' is ambiguous}}
 }

diff  --git a/libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type1.compile.fail.cpp b/libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type3.verify.cpp
similarity index 64%
rename from libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type1.compile.fail.cpp
rename to libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type3.verify.cpp
index 931ec31bbfd31..d2d9b67c5bc66 100644
--- a/libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type1.compile.fail.cpp
+++ b/libcxx/test/std/utilities/utility/pairs/pair.astuple/pairs.by.type3.verify.cpp
@@ -7,16 +7,12 @@
 //===----------------------------------------------------------------------===//
 
 // UNSUPPORTED: c++03, c++11
-#include <utility>
-#include <complex>
-
-#include <cassert>
 
-int main(int, char**)
-{
-    typedef std::complex<float> cf;
-    auto t1 = std::make_pair<int, double> ( 42, 3.4 );
-    assert (( std::get<cf>(t1) == cf {1,2} ));  // no such type
+#include <memory>
+#include <utility>
 
-  return 0;
+void f() {
+  typedef std::unique_ptr<int> Ptr;
+  std::pair<Ptr, int> t(Ptr(new int(4)), 23);
+  Ptr p = std::get<Ptr>(t); // expected-error {{call to implicitly-deleted copy constructor of 'Ptr'}}
 }

diff  --git a/libcxx/test/std/utilities/utility/pairs/pair.astuple/tuple_element.fail.cpp b/libcxx/test/std/utilities/utility/pairs/pair.astuple/tuple_element.verify.cpp
similarity index 70%
rename from libcxx/test/std/utilities/utility/pairs/pair.astuple/tuple_element.fail.cpp
rename to libcxx/test/std/utilities/utility/pairs/pair.astuple/tuple_element.verify.cpp
index a9a16a42e5037..4f70e9f70cf66 100644
--- a/libcxx/test/std/utilities/utility/pairs/pair.astuple/tuple_element.fail.cpp
+++ b/libcxx/test/std/utilities/utility/pairs/pair.astuple/tuple_element.verify.cpp
@@ -14,10 +14,7 @@
 
 #include <utility>
 
-int main(int, char**)
-{
-    typedef std::pair<int, short> T;
-    std::tuple_element<2, T>::type foo; // expected-error@*:* {{Index out of bounds in std::tuple_element<std::pair<T1, T2>>}}
-
-    return 0;
+void f() {
+  typedef std::pair<int, short> T;
+  std::tuple_element<2, T>::type foo; // expected-error@*:* {{Index out of bounds in std::tuple_element<std::pair<T1, T2>>}}
 }

diff  --git a/libcxx/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct_t.fail.cpp b/libcxx/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct_t.verify.cpp
similarity index 94%
rename from libcxx/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct_t.fail.cpp
rename to libcxx/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct_t.verify.cpp
index 3a7af0911a7dd..a72a99da4e9dd 100644
--- a/libcxx/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct_t.fail.cpp
+++ b/libcxx/test/std/utilities/utility/pairs/pair.piecewise/piecewise_construct_t.verify.cpp
@@ -17,9 +17,4 @@
 
 #include <utility>
 
-
 std::piecewise_construct_t f() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}}
-
-int main(int, char**) {
-    return 0;
-}

diff  --git a/libcxx/test/std/utilities/utility/pairs/pairs.pair/default.explicit.fail.cpp b/libcxx/test/std/utilities/utility/pairs/pairs.pair/default.explicit.verify.cpp
similarity index 97%
rename from libcxx/test/std/utilities/utility/pairs/pairs.pair/default.explicit.fail.cpp
rename to libcxx/test/std/utilities/utility/pairs/pairs.pair/default.explicit.verify.cpp
index 2c4106ff90459..50a4eb74800a0 100644
--- a/libcxx/test/std/utilities/utility/pairs/pairs.pair/default.explicit.fail.cpp
+++ b/libcxx/test/std/utilities/utility/pairs/pairs.pair/default.explicit.verify.cpp
@@ -32,7 +32,3 @@ std::pair<ImplicitlyDefaultConstructible, ExplicitlyDefaultConstructible> test1(
 std::pair<ExplicitlyDefaultConstructible, ImplicitlyDefaultConstructible> test2() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}}
 std::pair<ExplicitlyDefaultConstructible, ExplicitlyDefaultConstructible> test3() { return {}; } // expected-error 1 {{chosen constructor is explicit in copy-initialization}}
 std::pair<ImplicitlyDefaultConstructible, ImplicitlyDefaultConstructible> test4() { return {}; }
-
-int main(int, char**) {
-    return 0;
-}

diff  --git a/libcxx/test/std/utilities/utility/pairs/pairs.pair/not_constexpr_cxx11.fail.cpp b/libcxx/test/std/utilities/utility/pairs/pairs.pair/not_constexpr_cxx11.verify.cpp
similarity index 86%
rename from libcxx/test/std/utilities/utility/pairs/pairs.pair/not_constexpr_cxx11.fail.cpp
rename to libcxx/test/std/utilities/utility/pairs/pairs.pair/not_constexpr_cxx11.verify.cpp
index 88d0f96493999..e994734fc408f 100644
--- a/libcxx/test/std/utilities/utility/pairs/pairs.pair/not_constexpr_cxx11.fail.cpp
+++ b/libcxx/test/std/utilities/utility/pairs/pairs.pair/not_constexpr_cxx11.verify.cpp
@@ -16,19 +16,18 @@
 #include <cassert>
 
 struct ExplicitT {
-  constexpr explicit ExplicitT(int x) : value(x) {}
-  constexpr explicit ExplicitT(ExplicitT const& o) : value(o.value) {}
-  int value;
+    constexpr explicit ExplicitT(int x) : value(x) {}
+    constexpr explicit ExplicitT(ExplicitT const& o) : value(o.value) {}
+    int value;
 };
 
 struct ImplicitT {
-  constexpr ImplicitT(int x) : value(x) {}
-  constexpr ImplicitT(ImplicitT const& o) : value(o.value) {}
-  int value;
+    constexpr ImplicitT(int x) : value(x) {}
+    constexpr ImplicitT(ImplicitT const& o) : value(o.value) {}
+    int value;
 };
 
-int main(int, char**)
-{
+void f() {
     {
         using P = std::pair<int, int>;
         constexpr int x = 42;
@@ -53,6 +52,4 @@ int main(int, char**)
         constexpr P U_V = {42, 101}; // expected-error {{must be initialized by a constant expression}}
         constexpr P pair_U_V = other; // expected-error {{must be initialized by a constant expression}}
     }
-
-  return 0;
 }


        


More information about the libcxx-commits mailing list