diff options
author | Haojian Wu <hokein.wu@gmail.com> | 2022-08-06 23:34:02 +0200 |
---|---|---|
committer | Haojian Wu <hokein.wu@gmail.com> | 2022-08-07 16:53:56 +0200 |
commit | 82439b201a01707fd18f0d34a4b625132b9c7304 (patch) | |
tree | ec6910f91a52b562ad41fc5c4b8f3a0a79d7eb31 | |
parent | 32fd0b7fd5ab26a70be1a16846232055e92cb597 (diff) |
[clang-tidy] Fix a forwarding-reference-overload crash after the
ElaboratedType change.
After 15f3cd6bfc670ba6106184a903eb04be059e5977, the nss of
ElaboratedType can be null.
-rw-r--r-- | clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp | 9 | ||||
-rw-r--r-- | clang-tools-extra/test/clang-tidy/checkers/bugprone/forwarding-reference-overload.cpp | 11 |
2 files changed, 16 insertions, 4 deletions
diff --git a/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/ForwardingReferenceOverloadCheck.cpp index 568f139bdb85..2f9946a7cc1b 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 920029b56e55..38b0691bc9f1 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 @@ public: 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){} +}; |