diff options
author | Piotr Zegar <me@piotrzegar.pl> | 2024-05-15 17:52:46 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-15 17:52:46 +0200 |
commit | ba3447601c435bb2b24ad9e3c8d146c578f00568 (patch) | |
tree | be52251adc706efefaa1f1e386a68937fd876841 /clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp | |
parent | 3a8d176af519e4385652e762c615ace9b80ef045 (diff) | |
download | llvm-ba3447601c435bb2b24ad9e3c8d146c578f00568.zip llvm-ba3447601c435bb2b24ad9e3c8d146c578f00568.tar.gz llvm-ba3447601c435bb2b24ad9e3c8d146c578f00568.tar.bz2 |
[clang-tidy] Fix crash in modernize-use-constraints (#92019)
Improved modernize-use-constraints check by fixing a crash that occurred
in some scenarios and excluded system headers from analysis.
Problem were with DependentNameTypeLoc having null type location as
getQualifierLoc().getTypeLoc().
Fixes #91872
Diffstat (limited to 'clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp')
-rw-r--r-- | clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp b/clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp index 1585925e..7a021fe 100644 --- a/clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp @@ -41,6 +41,8 @@ AST_MATCHER(FunctionDecl, hasOtherDeclarations) { void UseConstraintsCheck::registerMatchers(MatchFinder *Finder) { Finder->addMatcher( functionTemplateDecl( + // Skip external libraries included as system headers + unless(isExpansionInSystemHeader()), has(functionDecl(unless(hasOtherDeclarations()), isDefinition(), hasReturnTypeLoc(typeLoc().bind("return"))) .bind("function"))) @@ -57,6 +59,8 @@ matchEnableIfSpecializationImplTypename(TypeLoc TheType) { return std::nullopt; } TheType = Dep.getQualifierLoc().getTypeLoc(); + if (TheType.isNull()) + return std::nullopt; } if (const auto SpecializationLoc = |