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