[libcxx-commits] [libcxxabi] [libc++abi][NFC] Enable modernize-use-override clang-tidy check (PR #213253)

Nikolas Klauser via libcxx-commits libcxx-commits at lists.llvm.org
Fri Jul 31 04:44:38 PDT 2026


https://github.com/philnik777 created https://github.com/llvm/llvm-project/pull/213253

None

>From 2f970ca789d4fa5bce8baf226f6e4ac8ceb87384 Mon Sep 17 00:00:00 2001
From: Nikolas Klauser <nikolasklauser at berlin.de>
Date: Fri, 31 Jul 2026 13:44:18 +0200
Subject: [PATCH] [libc++abi][NFC] Enable modernize-use-override clang-tidy
 check

---
 libcxxabi/.clang-tidy            |  2 +-
 libcxxabi/src/private_typeinfo.h | 87 +++++++++++++-------------------
 2 files changed, 36 insertions(+), 53 deletions(-)

diff --git a/libcxxabi/.clang-tidy b/libcxxabi/.clang-tidy
index cbb2351419896..365548b0bfab2 100644
--- a/libcxxabi/.clang-tidy
+++ b/libcxxabi/.clang-tidy
@@ -11,6 +11,7 @@ Checks: >
   misc-uniqueptr-reset-release,
 
   modernize-redundant-void-arg,
+  modernize-use-override,
 
   readability-duplicate-include,
   readability-function-cognitive-complexity,
@@ -50,6 +51,5 @@ CheckOptions:
 # modernize-loop-convert,
 # modernize-use-equals-delete,
 # modernize-use-nullptr,
-# modernize-use-override,
 # readability-identifier-naming,
 # readability-simplify-boolean-expr,
diff --git a/libcxxabi/src/private_typeinfo.h b/libcxxabi/src/private_typeinfo.h
index e92dc332d986b..ad5a8e57ae25b 100644
--- a/libcxxabi/src/private_typeinfo.h
+++ b/libcxxabi/src/private_typeinfo.h
@@ -18,7 +18,7 @@ namespace __cxxabiv1 {
 
 class _LIBCXXABI_TYPE_VIS __shim_type_info : public std::type_info {
 public:
-  _LIBCXXABI_HIDDEN virtual ~__shim_type_info();
+  _LIBCXXABI_HIDDEN ~__shim_type_info() override;
 
   _LIBCXXABI_HIDDEN virtual void noop1() const;
   _LIBCXXABI_HIDDEN virtual void noop2() const;
@@ -26,32 +26,28 @@ class _LIBCXXABI_TYPE_VIS __shim_type_info : public std::type_info {
                                            void *&adjustedPtr) const = 0;
 };
 
-class _LIBCXXABI_TYPE_VIS __fundamental_type_info : public __shim_type_info {
+class _LIBCXXABI_TYPE_VIS __fundamental_type_info final : public __shim_type_info {
 public:
-  _LIBCXXABI_HIDDEN virtual ~__fundamental_type_info();
-  _LIBCXXABI_HIDDEN virtual bool can_catch(const __shim_type_info *,
-                                           void *&) const;
+  _LIBCXXABI_HIDDEN ~__fundamental_type_info() final;
+  _LIBCXXABI_HIDDEN bool can_catch(const __shim_type_info*, void*&) const final;
 };
 
-class _LIBCXXABI_TYPE_VIS __array_type_info : public __shim_type_info {
+class _LIBCXXABI_TYPE_VIS __array_type_info final : public __shim_type_info {
 public:
-  _LIBCXXABI_HIDDEN virtual ~__array_type_info();
-  _LIBCXXABI_HIDDEN virtual bool can_catch(const __shim_type_info *,
-                                           void *&) const;
+  _LIBCXXABI_HIDDEN ~__array_type_info() final;
+  _LIBCXXABI_HIDDEN bool can_catch(const __shim_type_info*, void*&) const final;
 };
 
-class _LIBCXXABI_TYPE_VIS __function_type_info : public __shim_type_info {
+class _LIBCXXABI_TYPE_VIS __function_type_info final : public __shim_type_info {
 public:
-  _LIBCXXABI_HIDDEN virtual ~__function_type_info();
-  _LIBCXXABI_HIDDEN virtual bool can_catch(const __shim_type_info *,
-                                           void *&) const;
+  _LIBCXXABI_HIDDEN ~__function_type_info() final;
+  _LIBCXXABI_HIDDEN bool can_catch(const __shim_type_info*, void*&) const final;
 };
 
-class _LIBCXXABI_TYPE_VIS __enum_type_info : public __shim_type_info {
+class _LIBCXXABI_TYPE_VIS __enum_type_info final : public __shim_type_info {
 public:
-  _LIBCXXABI_HIDDEN virtual ~__enum_type_info();
-  _LIBCXXABI_HIDDEN virtual bool can_catch(const __shim_type_info *,
-                                           void *&) const;
+  _LIBCXXABI_HIDDEN ~__enum_type_info() final;
+  _LIBCXXABI_HIDDEN bool can_catch(const __shim_type_info*, void*&) const final;
 };
 
 enum
@@ -122,7 +118,7 @@ struct _LIBCXXABI_HIDDEN __dynamic_cast_info
 // Has no base class
 class _LIBCXXABI_TYPE_VIS __class_type_info : public __shim_type_info {
 public:
-  _LIBCXXABI_HIDDEN virtual ~__class_type_info();
+  _LIBCXXABI_HIDDEN ~__class_type_info() override;
 
   _LIBCXXABI_HIDDEN void process_static_type_above_dst(__dynamic_cast_info *,
                                                        const void *,
@@ -136,26 +132,21 @@ class _LIBCXXABI_TYPE_VIS __class_type_info : public __shim_type_info {
                                                   int, bool) const;
   _LIBCXXABI_HIDDEN virtual void
   search_below_dst(__dynamic_cast_info *, const void *, int, bool) const;
-  _LIBCXXABI_HIDDEN virtual bool can_catch(const __shim_type_info *,
-                                           void *&) const;
+  _LIBCXXABI_HIDDEN bool can_catch(const __shim_type_info*, void*&) const final;
   _LIBCXXABI_HIDDEN virtual void
   has_unambiguous_public_base(__dynamic_cast_info *, void *, int) const;
 };
 
 // Has one non-virtual public base class at offset zero
-class _LIBCXXABI_TYPE_VIS __si_class_type_info : public __class_type_info {
+class _LIBCXXABI_TYPE_VIS __si_class_type_info final : public __class_type_info {
 public:
   _LIBCXXABI_DISABLE_POINTER_FIELD_PROTECTION const __class_type_info* __base_type;
 
-  _LIBCXXABI_HIDDEN virtual ~__si_class_type_info();
+  _LIBCXXABI_HIDDEN ~__si_class_type_info() final;
 
-  _LIBCXXABI_HIDDEN virtual void search_above_dst(__dynamic_cast_info *,
-                                                  const void *, const void *,
-                                                  int, bool) const;
-  _LIBCXXABI_HIDDEN virtual void
-  search_below_dst(__dynamic_cast_info *, const void *, int, bool) const;
-  _LIBCXXABI_HIDDEN virtual void
-  has_unambiguous_public_base(__dynamic_cast_info *, void *, int) const;
+  _LIBCXXABI_HIDDEN void search_above_dst(__dynamic_cast_info*, const void*, const void*, int, bool) const final;
+  _LIBCXXABI_HIDDEN void search_below_dst(__dynamic_cast_info*, const void*, int, bool) const final;
+  _LIBCXXABI_HIDDEN void has_unambiguous_public_base(__dynamic_cast_info*, void*, int) const final;
 };
 
 struct _LIBCXXABI_HIDDEN __base_class_type_info
@@ -177,7 +168,7 @@ struct _LIBCXXABI_HIDDEN __base_class_type_info
 };
 
 // Has one or more base classes
-class _LIBCXXABI_TYPE_VIS __vmi_class_type_info : public __class_type_info {
+class _LIBCXXABI_TYPE_VIS __vmi_class_type_info final : public __class_type_info {
 public:
   unsigned int __flags;
   unsigned int __base_count;
@@ -190,15 +181,11 @@ class _LIBCXXABI_TYPE_VIS __vmi_class_type_info : public __class_type_info {
                                      //    more derived objects
   };
 
-  _LIBCXXABI_HIDDEN virtual ~__vmi_class_type_info();
+  _LIBCXXABI_HIDDEN ~__vmi_class_type_info() final;
 
-  _LIBCXXABI_HIDDEN virtual void search_above_dst(__dynamic_cast_info *,
-                                                  const void *, const void *,
-                                                  int, bool) const;
-  _LIBCXXABI_HIDDEN virtual void
-  search_below_dst(__dynamic_cast_info *, const void *, int, bool) const;
-  _LIBCXXABI_HIDDEN virtual void
-  has_unambiguous_public_base(__dynamic_cast_info *, void *, int) const;
+  _LIBCXXABI_HIDDEN void search_above_dst(__dynamic_cast_info*, const void*, const void*, int, bool) const final;
+  _LIBCXXABI_HIDDEN void search_below_dst(__dynamic_cast_info*, const void*, int, bool) const final;
+  _LIBCXXABI_HIDDEN void has_unambiguous_public_base(__dynamic_cast_info*, void*, int) const final;
 };
 
 class _LIBCXXABI_TYPE_VIS __pbase_type_info : public __shim_type_info {
@@ -229,28 +216,24 @@ class _LIBCXXABI_TYPE_VIS __pbase_type_info : public __shim_type_info {
     __no_add_flags_mask = __transaction_safe_mask | __noexcept_mask
   };
 
-  _LIBCXXABI_HIDDEN virtual ~__pbase_type_info();
-  _LIBCXXABI_HIDDEN virtual bool can_catch(const __shim_type_info *,
-                                           void *&) const;
+  _LIBCXXABI_HIDDEN ~__pbase_type_info() override;
+  _LIBCXXABI_HIDDEN bool can_catch(const __shim_type_info*, void*&) const override;
 };
 
-class _LIBCXXABI_TYPE_VIS __pointer_type_info : public __pbase_type_info {
+class _LIBCXXABI_TYPE_VIS __pointer_type_info final : public __pbase_type_info {
 public:
-  _LIBCXXABI_HIDDEN virtual ~__pointer_type_info();
-  _LIBCXXABI_HIDDEN virtual bool can_catch(const __shim_type_info *,
-                                           void *&) const;
-  _LIBCXXABI_HIDDEN bool can_catch_nested(const __shim_type_info *) const;
+  _LIBCXXABI_HIDDEN ~__pointer_type_info() final;
+  _LIBCXXABI_HIDDEN bool can_catch(const __shim_type_info*, void*&) const final;
+  _LIBCXXABI_HIDDEN bool can_catch_nested(const __shim_type_info*) const;
 };
 
-class _LIBCXXABI_TYPE_VIS __pointer_to_member_type_info
-    : public __pbase_type_info {
+class _LIBCXXABI_TYPE_VIS __pointer_to_member_type_info final : public __pbase_type_info {
 public:
   _LIBCXXABI_DISABLE_POINTER_FIELD_PROTECTION const __class_type_info* __context;
 
-  _LIBCXXABI_HIDDEN virtual ~__pointer_to_member_type_info();
-  _LIBCXXABI_HIDDEN virtual bool can_catch(const __shim_type_info *,
-                                           void *&) const;
-  _LIBCXXABI_HIDDEN bool can_catch_nested(const __shim_type_info *) const;
+  _LIBCXXABI_HIDDEN ~__pointer_to_member_type_info() final;
+  _LIBCXXABI_HIDDEN bool can_catch(const __shim_type_info*, void*&) const final;
+  _LIBCXXABI_HIDDEN bool can_catch_nested(const __shim_type_info*) const;
 };
 
 }  // __cxxabiv1



More information about the libcxx-commits mailing list