[libcxx-commits] [libcxx] 2b2ee24 - [libc++] [test] Remove `using std::{make_, }optional` from the optional tests.

Arthur O'Dwyer via libcxx-commits libcxx-commits at lists.llvm.org
Wed Feb 16 08:00:15 PST 2022


Author: Arthur O'Dwyer
Date: 2022-02-16T10:59:43-05:00
New Revision: 2b2ee24d5330d0db93e430b8f0776779ed699f55

URL: https://github.com/llvm/llvm-project/commit/2b2ee24d5330d0db93e430b8f0776779ed699f55
DIFF: https://github.com/llvm/llvm-project/commit/2b2ee24d5330d0db93e430b8f0776779ed699f55.diff

LOG: [libc++] [test] Remove `using std::{make_,}optional` from the optional tests.

Drive-by remove some use of raw `new`, and expand test coverage a tiny bit.

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

Added: 
    

Modified: 
    libcxx/test/std/utilities/optional/optional.specalg/make_optional.pass.cpp
    libcxx/test/std/utilities/optional/optional.specalg/make_optional_explicit.pass.cpp
    libcxx/test/std/utilities/optional/optional.specalg/make_optional_explicit_initializer_list.pass.cpp

Removed: 
    


################################################################################
diff  --git a/libcxx/test/std/utilities/optional/optional.specalg/make_optional.pass.cpp b/libcxx/test/std/utilities/optional/optional.specalg/make_optional.pass.cpp
index 681fe28a2a9b2..1bd688b92b3e3 100644
--- a/libcxx/test/std/utilities/optional/optional.specalg/make_optional.pass.cpp
+++ b/libcxx/test/std/utilities/optional/optional.specalg/make_optional.pass.cpp
@@ -25,29 +25,32 @@
 
 int main(int, char**)
 {
-    using std::optional;
-    using std::make_optional;
     {
-        int arr[10]; ((void)arr);
-        ASSERT_SAME_TYPE(decltype(make_optional(arr)), optional<int*>);
+        int arr[10];
+        auto opt = std::make_optional(arr);
+        ASSERT_SAME_TYPE(decltype(opt), std::optional<int*>);
+        assert(*opt == arr);
     }
     {
-        constexpr auto opt = make_optional(2);
-        ASSERT_SAME_TYPE(decltype(opt), const optional<int>);
+        constexpr auto opt = std::make_optional(2);
+        ASSERT_SAME_TYPE(decltype(opt), const std::optional<int>);
         static_assert(opt.value() == 2);
     }
     {
-        optional<int> opt = make_optional(2);
+        auto opt = std::make_optional(2);
+        ASSERT_SAME_TYPE(decltype(opt), std::optional<int>);
         assert(*opt == 2);
     }
     {
-        std::string s("123");
-        optional<std::string> opt = make_optional(s);
-        assert(*opt == s);
+        const std::string s = "123";
+        auto opt = std::make_optional(s);
+        ASSERT_SAME_TYPE(decltype(opt), std::optional<std::string>);
+        assert(*opt == "123");
     }
     {
-        std::unique_ptr<int> s(new int(3));
-        optional<std::unique_ptr<int>> opt = make_optional(std::move(s));
+        std::unique_ptr<int> s = std::make_unique<int>(3);
+        auto opt = std::make_optional(std::move(s));
+        ASSERT_SAME_TYPE(decltype(opt), std::optional<std::unique_ptr<int>>);
         assert(**opt == 3);
         assert(s == nullptr);
     }

diff  --git a/libcxx/test/std/utilities/optional/optional.specalg/make_optional_explicit.pass.cpp b/libcxx/test/std/utilities/optional/optional.specalg/make_optional_explicit.pass.cpp
index fba4aa41a3c27..e7931e07e31d1 100644
--- a/libcxx/test/std/utilities/optional/optional.specalg/make_optional_explicit.pass.cpp
+++ b/libcxx/test/std/utilities/optional/optional.specalg/make_optional_explicit.pass.cpp
@@ -21,26 +21,23 @@
 
 int main(int, char**)
 {
-    using std::optional;
-    using std::make_optional;
-
     {
-        constexpr auto opt = make_optional<int>('a');
-        static_assert(*opt == int('a'), "");
+        constexpr auto opt = std::make_optional<int>('a');
+        static_assert(*opt == int('a'));
     }
     {
-        std::string s("123");
-        auto opt = make_optional<std::string>(s);
-        assert(*opt == s);
+        std::string s = "123";
+        auto opt = std::make_optional<std::string>(s);
+        assert(*opt == "123");
     }
     {
-        std::unique_ptr<int> s(new int(3));
-        auto opt = make_optional<std::unique_ptr<int>>(std::move(s));
+        std::unique_ptr<int> s = std::make_unique<int>(3);
+        auto opt = std::make_optional<std::unique_ptr<int>>(std::move(s));
         assert(**opt == 3);
         assert(s == nullptr);
     }
     {
-        auto opt = make_optional<std::string>(4u, 'X');
+        auto opt = std::make_optional<std::string>(4u, 'X');
         assert(*opt == "XXXX");
     }
 

diff  --git a/libcxx/test/std/utilities/optional/optional.specalg/make_optional_explicit_initializer_list.pass.cpp b/libcxx/test/std/utilities/optional/optional.specalg/make_optional_explicit_initializer_list.pass.cpp
index 0cfe2d462b0cb..80371d6333712 100644
--- a/libcxx/test/std/utilities/optional/optional.specalg/make_optional_explicit_initializer_list.pass.cpp
+++ b/libcxx/test/std/utilities/optional/optional.specalg/make_optional_explicit_initializer_list.pass.cpp
@@ -12,43 +12,54 @@
 // template <class T, class U, class... Args>
 //   constexpr optional<T> make_optional(initializer_list<U> il, Args&&... args);
 
+#include <cassert>
+#include <memory>
 #include <optional>
 #include <string>
-#include <memory>
-#include <cassert>
 
 #include "test_macros.h"
 
 struct TestT {
   int x;
   int size;
-  constexpr TestT(std::initializer_list<int> il) : x(*il.begin()), size(static_cast<int>(il.size())) {}
-  constexpr TestT(std::initializer_list<int> il, const int*)
-      : x(*il.begin()), size(static_cast<int>(il.size())) {}
+  int *ptr;
+  constexpr TestT(std::initializer_list<int> il)
+    : x(*il.begin()), size(static_cast<int>(il.size())), ptr(nullptr) {}
+  constexpr TestT(std::initializer_list<int> il, int *p)
+    : x(*il.begin()), size(static_cast<int>(il.size())), ptr(p) {}
 };
 
-int main(int, char**)
+constexpr bool test()
 {
-    using std::make_optional;
-    {
-        constexpr auto opt = make_optional<TestT>({42, 2, 3});
-        ASSERT_SAME_TYPE(decltype(opt), const std::optional<TestT>);
-        static_assert(opt->x == 42, "");
-        static_assert(opt->size == 3, "");
-    }
-    {
-        constexpr auto opt = make_optional<TestT>({42, 2, 3}, nullptr);
-        static_assert(opt->x == 42, "");
-        static_assert(opt->size == 3, "");
-    }
-    {
-        auto opt = make_optional<std::string>({'1', '2', '3'});
-        assert(*opt == "123");
-    }
-    {
-        auto opt = make_optional<std::string>({'a', 'b', 'c'}, std::allocator<char>{});
-        assert(*opt == "abc");
-    }
+  {
+    auto opt = std::make_optional<TestT>({42, 2, 3});
+    ASSERT_SAME_TYPE(decltype(opt), std::optional<TestT>);
+    assert(opt->x == 42);
+    assert(opt->size == 3);
+    assert(opt->ptr == nullptr);
+  }
+  {
+    int i = 42;
+    auto opt = std::make_optional<TestT>({42, 2, 3}, &i);
+    ASSERT_SAME_TYPE(decltype(opt), std::optional<TestT>);
+    assert(opt->x == 42);
+    assert(opt->size == 3);
+    assert(opt->ptr == &i);
+  }
+  return true;
+}
 
+int main(int, char**)
+{
+  test();
+  static_assert(test());
+  {
+    auto opt = std::make_optional<std::string>({'1', '2', '3'});
+    assert(*opt == "123");
+  }
+  {
+    auto opt = std::make_optional<std::string>({'a', 'b', 'c'}, std::allocator<char>{});
+    assert(*opt == "abc");
+  }
   return 0;
 }


        


More information about the libcxx-commits mailing list