Author: caseycarter Date: Thu Aug 31 10:56:31 2017 New Revision: 312256 URL: http://llvm.org/viewvc/llvm-project?rev=312256&view=rev Log: [test] Cleanup nullopt_t tests
* Update specification text from N4387 * Delete not_brace_initializable.fail.cpp: it's redundant with nullopt_t.fail.cpp * is_empty<T> implies is_class<T> * is_literal is deprecated; directly verify that we can create a nullopt_t in a constexpr context Differential Revision: D37024 Removed: libcxx/trunk/test/std/utilities/optional/optional.nullopt/not_brace_initializable.fail.cpp Modified: libcxx/trunk/test/std/utilities/optional/optional.nullopt/nullopt_t.fail.cpp libcxx/trunk/test/std/utilities/optional/optional.nullopt/nullopt_t.pass.cpp Removed: libcxx/trunk/test/std/utilities/optional/optional.nullopt/not_brace_initializable.fail.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/utilities/optional/optional.nullopt/not_brace_initializable.fail.cpp?rev=312255&view=auto ============================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.nullopt/not_brace_initializable.fail.cpp (original) +++ libcxx/trunk/test/std/utilities/optional/optional.nullopt/not_brace_initializable.fail.cpp (removed) @@ -1,25 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -// UNSUPPORTED: c++98, c++03, c++11, c++14 -// <optional> - -// struct nullopt_t{see below}; - -#include <optional> - -using std::optional; -using std::nullopt_t; - -int main() -{ - // I roughly interpret LWG2736 as "it shall not be possible to copy-list-initialize nullopt_t with an - // empty braced-init-list." - nullopt_t foo = {}; -} Modified: libcxx/trunk/test/std/utilities/optional/optional.nullopt/nullopt_t.fail.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/utilities/optional/optional.nullopt/nullopt_t.fail.cpp?rev=312256&r1=312255&r2=312256&view=diff ============================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.nullopt/nullopt_t.fail.cpp (original) +++ libcxx/trunk/test/std/utilities/optional/optional.nullopt/nullopt_t.fail.cpp Thu Aug 31 10:56:31 2017 @@ -11,15 +11,13 @@ // <optional> // struct nullopt_t{see below}; -// constexpr nullopt_t nullopt(unspecified); +// inline constexpr nullopt_t nullopt(unspecified); // [optional.nullopt]/2: -// Type nullopt_t shall not have a default constructor or an initializer-list constructor. -// It shall not be an aggregate and shall be a literal type. -// Constant nullopt shall be initialized with an argument of literal type. +// Type nullopt_t shall not have a default constructor or an initializer-list +// constructor, and shall not be an aggregate. #include <optional> -#include "test_macros.h" int main() { Modified: libcxx/trunk/test/std/utilities/optional/optional.nullopt/nullopt_t.pass.cpp URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/utilities/optional/optional.nullopt/nullopt_t.pass.cpp?rev=312256&r1=312255&r2=312256&view=diff ============================================================================== --- libcxx/trunk/test/std/utilities/optional/optional.nullopt/nullopt_t.pass.cpp (original) +++ libcxx/trunk/test/std/utilities/optional/optional.nullopt/nullopt_t.pass.cpp Thu Aug 31 10:56:31 2017 @@ -11,33 +11,30 @@ // <optional> // struct nullopt_t{see below}; -// constexpr nullopt_t nullopt(unspecified); +// inline constexpr nullopt_t nullopt(unspecified); // [optional.nullopt]/2: -// Type nullopt_t shall not have a default constructor or an initializer-list constructor. -// It shall not be an aggregate and shall be a literal type. -// Constant nullopt shall be initialized with an argument of literal type. +// Type nullopt_t shall not have a default constructor or an initializer-list +// constructor, and shall not be an aggregate. #include <optional> #include <type_traits> -using std::optional; using std::nullopt_t; using std::nullopt; -constexpr -int -test(const nullopt_t&) +constexpr bool test() { - return 3; + nullopt_t foo{nullopt}; + (void)foo; + return true; } int main() { - static_assert(( std::is_class<nullopt_t>::value), ""); - static_assert(( std::is_empty<nullopt_t>::value), ""); - static_assert(( std::is_literal_type<nullopt_t>::value), ""); - static_assert((!std::is_default_constructible<nullopt_t>::value), ""); + static_assert(std::is_empty_v<nullopt_t>); + static_assert(!std::is_default_constructible_v<nullopt_t>); - static_assert(test(nullopt) == 3, ""); + static_assert(std::is_same_v<const nullopt_t, decltype(nullopt)>); + static_assert(test()); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits