[libcxx-commits] [PATCH] D149554: [libc++][test] Selects proper C++23 field.

Mark de Wever via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Thu May 4 10:51:18 PDT 2023


This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Mordante marked an inline comment as done.
Closed by commit rGcc3be76bea66: [libc++][test] Selects proper C++23 field. (authored by Mordante).

Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D149554

Files:
  libcxx/test/tools/clang_tidy_checks/uglify_attributes.cpp


Index: libcxx/test/tools/clang_tidy_checks/uglify_attributes.cpp
===================================================================
--- libcxx/test/tools/clang_tidy_checks/uglify_attributes.cpp
+++ libcxx/test/tools/clang_tidy_checks/uglify_attributes.cpp
@@ -25,6 +25,24 @@
   return str.find("__") != std::string_view::npos;
 }
 
+// Starting with Clang 17 ToT C++23 support is provided by CPlusPlus23 instead
+// of C++23 support is provided by CPlusPlus2b. To allow a smooth transition for
+// libc++ use "reflection" to select the proper member. Since the change
+// happens in the development cycle it's not possible to use #ifdefs.
+template <class T>
+bool CPlusPlus23(const T& lang_opts)
+  requires requires { T::CPlusPlus2b; }
+{
+  return lang_opts.CPlusPlus2b;
+}
+
+template <class T>
+bool CPlusPlus23(const T& lang_opts)
+  requires requires { T::CPlusPlus23; }
+{
+  return lang_opts.CPlusPlus23;
+}
+
 std::vector<const char*> get_standard_attributes(const clang::LangOptions& lang_opts) {
   std::vector<const char*> attributes = {"noreturn", "carries_dependency"};
 
@@ -43,7 +61,7 @@
     attributes.emplace_back("no_unique_address");
   }
 
-  if (lang_opts.CPlusPlus2b) {
+  if (CPlusPlus23(lang_opts)) {
     attributes.emplace_back("assume");
   }
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D149554.519565.patch
Type: text/x-patch
Size: 1276 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20230504/617eed1e/attachment.bin>


More information about the libcxx-commits mailing list