[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