aboutsummaryrefslogtreecommitdiff
path: root/clang-tools-extra/clang-tidy/utils
diff options
context:
space:
mode:
authorJonathan Roelofs <jroelofs@jroelofs.com>2020-02-25 10:41:32 -0700
committerJonathan Roelofs <jroelofs@jroelofs.com>2020-03-09 11:32:44 -0600
commit3486cc014b208df3897cf5656db0d0fdeae26d6b (patch)
tree5d5e49f1d5489c446dcec6a8d339dd744a9ffa5a /clang-tools-extra/clang-tidy/utils
parentb28ed9cec8dd7225164eb8c0884aa463654ef3fc (diff)
downloadllvm-3486cc014b208df3897cf5656db0d0fdeae26d6b.zip
llvm-3486cc014b208df3897cf5656db0d0fdeae26d6b.tar.gz
llvm-3486cc014b208df3897cf5656db0d0fdeae26d6b.tar.bz2
[clang-tidy] Generalize HeaderFileExtensions.{h,cpp}. NFC
https://reviews.llvm.org/D75489
Diffstat (limited to 'clang-tools-extra/clang-tidy/utils')
-rw-r--r--clang-tools-extra/clang-tidy/utils/CMakeLists.txt2
-rw-r--r--clang-tools-extra/clang-tidy/utils/FileExtensionsUtils.cpp60
-rw-r--r--clang-tools-extra/clang-tidy/utils/FileExtensionsUtils.h (renamed from clang-tools-extra/clang-tidy/utils/HeaderFileExtensionsUtils.h)30
-rw-r--r--clang-tools-extra/clang-tidy/utils/HeaderFileExtensionsUtils.cpp70
-rw-r--r--clang-tools-extra/clang-tidy/utils/HeaderGuard.cpp4
-rw-r--r--clang-tools-extra/clang-tidy/utils/HeaderGuard.h8
6 files changed, 80 insertions, 94 deletions
diff --git a/clang-tools-extra/clang-tidy/utils/CMakeLists.txt b/clang-tools-extra/clang-tidy/utils/CMakeLists.txt
index 885c837..97171fb 100644
--- a/clang-tools-extra/clang-tidy/utils/CMakeLists.txt
+++ b/clang-tools-extra/clang-tidy/utils/CMakeLists.txt
@@ -5,8 +5,8 @@ add_clang_library(clangTidyUtils
DeclRefExprUtils.cpp
ExceptionAnalyzer.cpp
ExprSequence.cpp
+ FileExtensionsUtils.cpp
FixItHintUtils.cpp
- HeaderFileExtensionsUtils.cpp
HeaderGuard.cpp
IncludeInserter.cpp
IncludeSorter.cpp
diff --git a/clang-tools-extra/clang-tidy/utils/FileExtensionsUtils.cpp b/clang-tools-extra/clang-tidy/utils/FileExtensionsUtils.cpp
new file mode 100644
index 0000000..c016a72
--- /dev/null
+++ b/clang-tools-extra/clang-tidy/utils/FileExtensionsUtils.cpp
@@ -0,0 +1,60 @@
+//===--- FileExtensionsUtils.cpp - clang-tidy -------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "FileExtensionsUtils.h"
+#include "clang/Basic/CharInfo.h"
+#include "llvm/Support/Path.h"
+
+namespace clang {
+namespace tidy {
+namespace utils {
+
+bool isExpansionLocInHeaderFile(SourceLocation Loc, const SourceManager &SM,
+ const FileExtensionsSet &HeaderFileExtensions) {
+ SourceLocation ExpansionLoc = SM.getExpansionLoc(Loc);
+ return isFileExtension(SM.getFilename(ExpansionLoc), HeaderFileExtensions);
+}
+
+bool isPresumedLocInHeaderFile(SourceLocation Loc, SourceManager &SM,
+ const FileExtensionsSet &HeaderFileExtensions) {
+ PresumedLoc PresumedLocation = SM.getPresumedLoc(Loc);
+ return isFileExtension(PresumedLocation.getFilename(), HeaderFileExtensions);
+}
+
+bool isSpellingLocInHeaderFile(SourceLocation Loc, SourceManager &SM,
+ const FileExtensionsSet &HeaderFileExtensions) {
+ SourceLocation SpellingLoc = SM.getSpellingLoc(Loc);
+ return isFileExtension(SM.getFilename(SpellingLoc), HeaderFileExtensions);
+}
+
+bool parseFileExtensions(StringRef AllFileExtensions,
+ FileExtensionsSet &FileExtensions, char Delimiter) {
+ SmallVector<StringRef, 5> Suffixes;
+ AllFileExtensions.split(Suffixes, Delimiter);
+ FileExtensions.clear();
+ for (StringRef Suffix : Suffixes) {
+ StringRef Extension = Suffix.trim();
+ if (!llvm::all_of(Extension, isAlphanumeric))
+ return false;
+ FileExtensions.insert(Extension);
+ }
+ return true;
+}
+
+bool isFileExtension(StringRef FileName,
+ const FileExtensionsSet &FileExtensions) {
+ StringRef Extension = llvm::sys::path::extension(FileName);
+ if (Extension.empty())
+ return false;
+ // Skip "." prefix.
+ return FileExtensions.count(Extension.substr(1)) > 0;
+}
+
+} // namespace utils
+} // namespace tidy
+} // namespace clang
diff --git a/clang-tools-extra/clang-tidy/utils/HeaderFileExtensionsUtils.h b/clang-tools-extra/clang-tidy/utils/FileExtensionsUtils.h
index 48265c7..f83d357 100644
--- a/clang-tools-extra/clang-tidy/utils/HeaderFileExtensionsUtils.h
+++ b/clang-tools-extra/clang-tidy/utils/FileExtensionsUtils.h
@@ -1,4 +1,4 @@
-//===--- HeaderFileExtensionsUtils.h - clang-tidy----------------*- C++ -*-===//
+//===--- FileExtensionsUtils.h - clang-tidy --------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
@@ -18,35 +18,31 @@ namespace clang {
namespace tidy {
namespace utils {
-typedef llvm::SmallSet<llvm::StringRef, 5> HeaderFileExtensionsSet;
+typedef llvm::SmallSet<llvm::StringRef, 5> FileExtensionsSet;
/// Checks whether expansion location of \p Loc is in header file.
-bool isExpansionLocInHeaderFile(
- SourceLocation Loc, const SourceManager &SM,
- const HeaderFileExtensionsSet &HeaderFileExtensions);
+bool isExpansionLocInHeaderFile(SourceLocation Loc, const SourceManager &SM,
+ const FileExtensionsSet &HeaderFileExtensions);
/// Checks whether presumed location of \p Loc is in header file.
-bool isPresumedLocInHeaderFile(
- SourceLocation Loc, SourceManager &SM,
- const HeaderFileExtensionsSet &HeaderFileExtensions);
+bool isPresumedLocInHeaderFile(SourceLocation Loc, SourceManager &SM,
+ const FileExtensionsSet &HeaderFileExtensions);
/// Checks whether spelling location of \p Loc is in header file.
-bool isSpellingLocInHeaderFile(
- SourceLocation Loc, SourceManager &SM,
- const HeaderFileExtensionsSet &HeaderFileExtensions);
+bool isSpellingLocInHeaderFile(SourceLocation Loc, SourceManager &SM,
+ const FileExtensionsSet &HeaderFileExtensions);
/// Returns recommended default value for the list of header file
/// extensions.
inline StringRef defaultHeaderFileExtensions() { return ",h,hh,hpp,hxx"; }
/// Parses header file extensions from a semicolon-separated list.
-bool parseHeaderFileExtensions(StringRef AllHeaderFileExtensions,
- HeaderFileExtensionsSet &HeaderFileExtensions,
- char delimiter);
+bool parseFileExtensions(StringRef AllFileExtensions,
+ FileExtensionsSet &FileExtensions, char Delimiter);
-/// Decides whether a file has a header file extension.
-bool isHeaderFileExtension(StringRef FileName,
- const HeaderFileExtensionsSet &HeaderFileExtensions);
+/// Decides whether a file has one of the specified file extensions.
+bool isFileExtension(StringRef FileName,
+ const FileExtensionsSet &FileExtensions);
} // namespace utils
} // namespace tidy
diff --git a/clang-tools-extra/clang-tidy/utils/HeaderFileExtensionsUtils.cpp b/clang-tools-extra/clang-tidy/utils/HeaderFileExtensionsUtils.cpp
deleted file mode 100644
index 0215b2f..0000000
--- a/clang-tools-extra/clang-tidy/utils/HeaderFileExtensionsUtils.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-//===--- HeaderFileExtensionsUtils.cpp - clang-tidy--------------*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#include "HeaderFileExtensionsUtils.h"
-#include "clang/Basic/CharInfo.h"
-#include "llvm/Support/Path.h"
-
-namespace clang {
-namespace tidy {
-namespace utils {
-
-bool isExpansionLocInHeaderFile(
- SourceLocation Loc, const SourceManager &SM,
- const HeaderFileExtensionsSet &HeaderFileExtensions) {
- SourceLocation ExpansionLoc = SM.getExpansionLoc(Loc);
- return isHeaderFileExtension(SM.getFilename(ExpansionLoc),
- HeaderFileExtensions);
-}
-
-bool isPresumedLocInHeaderFile(
- SourceLocation Loc, SourceManager &SM,
- const HeaderFileExtensionsSet &HeaderFileExtensions) {
- PresumedLoc PresumedLocation = SM.getPresumedLoc(Loc);
- return isHeaderFileExtension(PresumedLocation.getFilename(),
- HeaderFileExtensions);
-}
-
-bool isSpellingLocInHeaderFile(
- SourceLocation Loc, SourceManager &SM,
- const HeaderFileExtensionsSet &HeaderFileExtensions) {
- SourceLocation SpellingLoc = SM.getSpellingLoc(Loc);
- return isHeaderFileExtension(SM.getFilename(SpellingLoc),
- HeaderFileExtensions);
-}
-
-bool parseHeaderFileExtensions(StringRef AllHeaderFileExtensions,
- HeaderFileExtensionsSet &HeaderFileExtensions,
- char delimiter) {
- SmallVector<StringRef, 5> Suffixes;
- AllHeaderFileExtensions.split(Suffixes, delimiter);
- HeaderFileExtensions.clear();
- for (StringRef Suffix : Suffixes) {
- StringRef Extension = Suffix.trim();
- for (StringRef::const_iterator it = Extension.begin();
- it != Extension.end(); ++it) {
- if (!isAlphanumeric(*it))
- return false;
- }
- HeaderFileExtensions.insert(Extension);
- }
- return true;
-}
-
-bool isHeaderFileExtension(
- StringRef FileName, const HeaderFileExtensionsSet &HeaderFileExtensions) {
- StringRef extension = llvm::sys::path::extension(FileName);
- if (extension.empty())
- return false;
- // Skip "." prefix.
- return HeaderFileExtensions.count(extension.substr(1)) > 0;
-}
-
-} // namespace utils
-} // namespace tidy
-} // namespace clang
diff --git a/clang-tools-extra/clang-tidy/utils/HeaderGuard.cpp b/clang-tools-extra/clang-tidy/utils/HeaderGuard.cpp
index 13107c25..1426fca 100644
--- a/clang-tools-extra/clang-tidy/utils/HeaderGuard.cpp
+++ b/clang-tools-extra/clang-tidy/utils/HeaderGuard.cpp
@@ -273,13 +273,13 @@ void HeaderGuardCheck::registerPPCallbacks(const SourceManager &SM,
}
bool HeaderGuardCheck::shouldSuggestEndifComment(StringRef FileName) {
- return utils::isHeaderFileExtension(FileName, HeaderFileExtensions);
+ return utils::isFileExtension(FileName, HeaderFileExtensions);
}
bool HeaderGuardCheck::shouldFixHeaderGuard(StringRef FileName) { return true; }
bool HeaderGuardCheck::shouldSuggestToAddHeaderGuard(StringRef FileName) {
- return utils::isHeaderFileExtension(FileName, HeaderFileExtensions);
+ return utils::isFileExtension(FileName, HeaderFileExtensions);
}
std::string HeaderGuardCheck::formatEndIf(StringRef HeaderGuard) {
diff --git a/clang-tools-extra/clang-tidy/utils/HeaderGuard.h b/clang-tools-extra/clang-tidy/utils/HeaderGuard.h
index 8ece331..cc3cafd 100644
--- a/clang-tools-extra/clang-tidy/utils/HeaderGuard.h
+++ b/clang-tools-extra/clang-tidy/utils/HeaderGuard.h
@@ -10,7 +10,7 @@
#define LLVM_CLANG_TOOLS_EXTRA_CLANG_TIDY_UTILS_HEADERGUARD_H
#include "../ClangTidy.h"
-#include "../utils/HeaderFileExtensionsUtils.h"
+#include "../utils/FileExtensionsUtils.h"
namespace clang {
namespace tidy {
@@ -29,8 +29,8 @@ public:
: ClangTidyCheck(Name, Context),
RawStringHeaderFileExtensions(Options.getLocalOrGlobal(
"HeaderFileExtensions", utils::defaultHeaderFileExtensions())) {
- utils::parseHeaderFileExtensions(RawStringHeaderFileExtensions,
- HeaderFileExtensions, ',');
+ utils::parseFileExtensions(RawStringHeaderFileExtensions,
+ HeaderFileExtensions, ',');
}
void registerPPCallbacks(const SourceManager &SM, Preprocessor *PP,
Preprocessor *ModuleExpanderPP) override;
@@ -54,7 +54,7 @@ public:
private:
std::string RawStringHeaderFileExtensions;
- utils::HeaderFileExtensionsSet HeaderFileExtensions;
+ utils::FileExtensionsSet HeaderFileExtensions;
};
} // namespace utils