[libcxx-commits] [PATCH] D121110: [libc++] Add tests for the content of <cstddef>

Louis Dionne via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Thu Mar 10 09:08:06 PST 2022


ldionne updated this revision to Diff 414401.
ldionne marked an inline comment as done.
ldionne added a comment.

Address review comments.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D121110/new/

https://reviews.llvm.org/D121110

Files:
  libcxx/test/libcxx/language.support/support.types/cstddef.compile.pass.cpp
  libcxx/test/std/language.support/support.types/cstddef.compile.pass.cpp


Index: libcxx/test/std/language.support/support.types/cstddef.compile.pass.cpp
===================================================================
--- /dev/null
+++ libcxx/test/std/language.support/support.types/cstddef.compile.pass.cpp
@@ -0,0 +1,46 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+// test the contents of <cstddef>
+
+// namespace std {
+//   using ptrdiff_t = see below;
+//   using size_t = see below;
+//   using max_align_t = see below;
+//   using nullptr_t = decltype(nullptr);
+//
+//   enum class byte : unsigned char {};
+//
+//   // [support.types.byteops], byte type operations
+//      [...] other byte-related functionality is tested elsewhere
+// }
+//
+// #define NULL see below
+// #define offsetof(P, D) see below
+
+#include <cstddef>
+#include "test_macros.h"
+
+using PtrdiffT = std::ptrdiff_t;
+using SizeT = std::size_t;
+#if TEST_STD_VER >= 11
+using MaxAlignT = std::max_align_t;
+using NullptrT = std::nullptr_t;
+#endif
+
+#if TEST_STD_VER >= 17
+using Byte = std::byte;
+#endif
+
+#ifndef NULL
+#   error "NULL should be defined by <cstddef>"
+#endif
+
+#ifndef offsetof
+#   error "offsetof() should be defined by <cstddef>"
+#endif
Index: libcxx/test/libcxx/language.support/support.types/cstddef.compile.pass.cpp
===================================================================
--- /dev/null
+++ libcxx/test/libcxx/language.support/support.types/cstddef.compile.pass.cpp
@@ -0,0 +1,26 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+// Make sure libc++'s <cstddef> defines types like ::nullptr_t in the global namespace.
+// This is a conforming extension to be consistent with other implementations, which all
+// appear to provide that behavior too.
+
+#include <cstddef>
+#include "test_macros.h"
+
+using PtrdiffT = ::ptrdiff_t;
+using SizeT = ::size_t;
+#if TEST_STD_VER >= 11
+using MaxAlignT = ::max_align_t;
+#endif
+
+// Supported in C++03 mode too for backwards compatibility with previous versions of libc++
+using NullptrT = ::nullptr_t;
+
+// Also ensure that we provide std::nullptr_t in C++03 mode, which is an extension too.
+using StdNullptrT = std::nullptr_t;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D121110.414401.patch
Type: text/x-patch
Size: 2797 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20220310/97268dbf/attachment.bin>


More information about the libcxx-commits mailing list