diff --git a/clang-tools-extra/clang-tidy/modernize/DeprecatedHeadersCheck.cpp b/clang-tools-extra/clang-tidy/modernize/DeprecatedHeadersCheck.cpp index 9f4c215614287..01aa9feb27e57 100644 --- a/clang-tools-extra/clang-tidy/modernize/DeprecatedHeadersCheck.cpp +++ b/clang-tools-extra/clang-tidy/modernize/DeprecatedHeadersCheck.cpp @@ -24,8 +24,9 @@ namespace { class IncludeModernizePPCallbacks : public PPCallbacks { public: explicit IncludeModernizePPCallbacks( - std::vector &IncludesToBeProcessed, LangOptions LangOpts, - const SourceManager &SM, bool CheckHeaderFile); + std::vector &IncludesToBeProcessed, + const LangOptions &LangOpts, const SourceManager &SM, + bool CheckHeaderFile); void InclusionDirective(SourceLocation HashLoc, const Token &IncludeTok, StringRef FileName, bool IsAngled, @@ -37,8 +38,7 @@ class IncludeModernizePPCallbacks : public PPCallbacks { private: std::vector &IncludesToBeProcessed; - LangOptions LangOpts; - llvm::StringMap CStyledHeaderToCxx; + llvm::StringMap CStyledHeaderToCxx; llvm::StringSet<> DeleteHeaders; const SourceManager &SM; bool CheckHeaderFile; @@ -131,48 +131,38 @@ void DeprecatedHeadersCheck::check( } IncludeModernizePPCallbacks::IncludeModernizePPCallbacks( - std::vector &IncludesToBeProcessed, LangOptions LangOpts, - const SourceManager &SM, bool CheckHeaderFile) - : IncludesToBeProcessed(IncludesToBeProcessed), LangOpts(LangOpts), SM(SM), + std::vector &IncludesToBeProcessed, + const LangOptions &LangOpts, const SourceManager &SM, bool CheckHeaderFile) + : IncludesToBeProcessed(IncludesToBeProcessed), SM(SM), CheckHeaderFile(CheckHeaderFile) { - for (const auto &KeyValue : - std::vector>( - {{"assert.h", "cassert"}, - {"complex.h", "complex"}, - {"ctype.h", "cctype"}, - {"errno.h", "cerrno"}, - {"float.h", "cfloat"}, - {"limits.h", "climits"}, - {"locale.h", "clocale"}, - {"math.h", "cmath"}, - {"setjmp.h", "csetjmp"}, - {"signal.h", "csignal"}, - {"stdarg.h", "cstdarg"}, - {"stddef.h", "cstddef"}, - {"stdio.h", "cstdio"}, - {"stdlib.h", "cstdlib"}, - {"string.h", "cstring"}, - {"time.h", "ctime"}, - {"wchar.h", "cwchar"}, - {"wctype.h", "cwctype"}})) { + + static constexpr std::pair CXX98Headers[] = { + {"assert.h", "cassert"}, {"complex.h", "complex"}, + {"ctype.h", "cctype"}, {"errno.h", "cerrno"}, + {"float.h", "cfloat"}, {"limits.h", "climits"}, + {"locale.h", "clocale"}, {"math.h", "cmath"}, + {"setjmp.h", "csetjmp"}, {"signal.h", "csignal"}, + {"stdarg.h", "cstdarg"}, {"stddef.h", "cstddef"}, + {"stdio.h", "cstdio"}, {"stdlib.h", "cstdlib"}, + {"string.h", "cstring"}, {"time.h", "ctime"}, + {"wchar.h", "cwchar"}, {"wctype.h", "cwctype"}, + }; + for (const auto &KeyValue : CXX98Headers) CStyledHeaderToCxx.insert(KeyValue); - } - // Add C++11 headers. - if (LangOpts.CPlusPlus11) { - for (const auto &KeyValue : - std::vector>( - {{"fenv.h", "cfenv"}, - {"stdint.h", "cstdint"}, - {"inttypes.h", "cinttypes"}, - {"tgmath.h", "ctgmath"}, - {"uchar.h", "cuchar"}})) { + + static constexpr std::pair CXX11Headers[] = { + {"fenv.h", "cfenv"}, {"stdint.h", "cstdint"}, + {"inttypes.h", "cinttypes"}, {"tgmath.h", "ctgmath"}, + {"uchar.h", "cuchar"}, + }; + if (LangOpts.CPlusPlus11) + for (const auto &KeyValue : CXX11Headers) CStyledHeaderToCxx.insert(KeyValue); - } - } - for (const auto &Key : - std::vector({"stdalign.h", "stdbool.h", "iso646.h"})) { + + static constexpr StringRef HeadersToDelete[] = {"stdalign.h", "stdbool.h", + "iso646.h"}; + for (const auto &Key : HeadersToDelete) DeleteHeaders.insert(Key); - } } void IncludeModernizePPCallbacks::InclusionDirective( @@ -205,7 +195,7 @@ void IncludeModernizePPCallbacks::InclusionDirective( } else if (DeleteHeaders.contains(FileName)) { IncludesToBeProcessed.emplace_back( // NOLINTNEXTLINE(modernize-use-emplace) - false-positive - IncludeMarker{std::string{}, FileName, + IncludeMarker{StringRef{}, FileName, SourceRange{HashLoc, FilenameRange.getEnd()}, DiagLoc}); } } diff --git a/clang-tools-extra/clang-tidy/modernize/DeprecatedHeadersCheck.h b/clang-tools-extra/clang-tidy/modernize/DeprecatedHeadersCheck.h index c9409cb641c54..03cf433aa2809 100644 --- a/clang-tools-extra/clang-tidy/modernize/DeprecatedHeadersCheck.h +++ b/clang-tools-extra/clang-tidy/modernize/DeprecatedHeadersCheck.h @@ -44,7 +44,7 @@ class DeprecatedHeadersCheck : public ClangTidyCheck { void check(const ast_matchers::MatchFinder::MatchResult &Result) override; struct IncludeMarker { - std::string Replacement; + StringRef Replacement; StringRef FileName; SourceRange ReplacementRange; SourceLocation DiagLoc;