aboutsummaryrefslogtreecommitdiff
path: root/clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp
diff options
context:
space:
mode:
authorPiotr Zegar <me@piotrzegar.pl>2024-05-15 17:52:46 +0200
committerGitHub <noreply@github.com>2024-05-15 17:52:46 +0200
commitba3447601c435bb2b24ad9e3c8d146c578f00568 (patch)
treebe52251adc706efefaa1f1e386a68937fd876841 /clang-tools-extra/clang-tidy/modernize/UseConstraintsCheck.cpp
parent3a8d176af519e4385652e762c615ace9b80ef045 (diff)
downloadllvm-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.cpp4
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 =