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){}
+};


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to