[clang-tools-extra] 82439b2 - [clang-tidy] Fix a forwarding-reference-overload crash after the

Haojian Wu via cfe-commits cfe-commits at lists.llvm.org
Sun Aug 7 07:54:16 PDT 2022


Author: Haojian Wu
Date: 2022-08-07T16:53:56+02:00
New Revision: 82439b201a01707fd18f0d34a4b625132b9c7304

URL: https://github.com/llvm/llvm-project/commit/82439b201a01707fd18f0d34a4b625132b9c7304
DIFF: https://github.com/llvm/llvm-project/commit/82439b201a01707fd18f0d34a4b625132b9c7304.diff

LOG: [clang-tidy] Fix a forwarding-reference-overload crash after the
ElaboratedType change.

After 15f3cd6bfc670ba6106184a903eb04be059e5977, the nss of
ElaboratedType can be null.

Added: 
    

Modified: 
    clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp
    clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp

Removed: 
    


################################################################################
diff  --git a/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp
index 568f139bdb856..2f9946a7cc1b2 100644
--- a/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp
@@ -44,11 +44,12 @@ AST_MATCHER(QualType, isEnableIf) {
   if (CheckTemplate(BaseType->getAs<TemplateSpecializationType>()))
     return true; // Case: enable_if_t< >.
   if (const auto *Elaborated = BaseType->getAs<ElaboratedType>()) {
-    if (const auto *Qualifier = Elaborated->getQualifier()->getAsType()) {
-      if (CheckTemplate(Qualifier->getAs<TemplateSpecializationType>())) {
-        return true; // Case: enable_if< >::type.
+    if (const auto *Q = Elaborated->getQualifier())
+      if (const auto *Qualifier = Q->getAsType()) {
+        if (CheckTemplate(Qualifier->getAs<TemplateSpecializationType>())) {
+          return true; // Case: enable_if< >::type.
+        }
       }
-    }
   }
   return false;
 }

diff  --git a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp
index 920029b56e55d..38b0691bc9f1e 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp
@@ -240,3 +240,14 @@ class Test9 {
   Test9(const Test9 &other) = default;
   Test9(Test9 &&other) = default;
 };
+
+
+template <typename T>
+class Test10 {
+public:
+  enum E {};
+  E e;
+
+  Test10(T &&Item, E e)
+      : e(e){}
+};


        


More information about the cfe-commits mailing list